asynchronous - BeautifulSoup 并行解析
问题描述
我有一个我想用 BeautifulSoup 解析的文件列表。跑步
soup = BeautifulSoup(file, 'html.parser')
每个文件大约需要 2 秒,以便
soups = []
for f in files:
soups.append(BeautifulSoup(f, 'html.parser'))
大约需要 40 秒。我想BeautifulSoup(file, 'html.parser')
在每个文件上一起运行,以便整个过程在大约 2 秒内完成。这可能吗?
我尝试了以下方法,但没有奏效:
async def parse_coroutine(F):
return BeautifulSoup(F, 'html.parser')
async def parse(F):
p = await parse_coroutine(F)
return p
lst = [parse(f) for f in files]
async def main():
await asyncio.gather(*lst)
asyncio.run(main())
1)BeautifulSoup(F, 'html.parser')
运行完成,我不能在运行时调用其他函数
2)上面的代码没有给我我想要的:我希望返回的对象BeautifulSoup(F, 'html.parser')
存储在一个列表中
据此,异步并没有真正按照我想要的方式实现并行处理。那么我的选择是什么?如果可能的话,我想要一个具体的解决方案,因为我不熟悉多线程/并发编程等。
解决方案
推荐阅读
- java - Bean 创建拦截器
- python - 为什么python`in`比`np.isin`快得多
- javascript - 我可以在 html 中的一个脚本中有 2 个函数吗?
- javascript - 反应参考值为空
- flutter - Flutter iOS:状态栏上的点击无法滚动到顶部
- c# - 如何在c#中与本地数据库同步时避免远程数据库中的重复
- javascript - 使用多行的 Heredoc 不起作用
- java - 如何使用 textviews 创建 json?安卓工作室
- apache-spark - 使用 MEMORY_AND_DISK 缓存/持久化会丢失数据吗?
- asp.net - SQL Server 拒绝连接