首页 > 解决方案 > 使用多处理或线程或异步进行多任务处理,具体取决于场景

问题描述

我已经准备好一次执行 1 个代码,我想将其升级为花哨的多任务处理。我正在寻求有关我可以用来实现目标的帮助。

我的代码按以下顺序执行:解析多页、解析多篇文章、解析多张图片。我尝试使用 pool.map() 进行多页面处理,结果是 Daemonic 的 KeyError 不能有子进程。我对这个多任务过程的理解是解析页面很快,解析帖子和图像可能真的很长。

如果我在单个页面上同时解析帖子和解析图像怎么办,可以允许吗?

我应该使用哪些模块来做到这一点?线?多处理?异步?我最近经历了很多,我正在为我应该使用的东西而苦苦挣扎。

标签: python-3.xmultithreadingpython-requestsmultiprocessingpython-asyncio

解决方案


所以在我的脑海中,你可以看两件事。

1)Asyncio(注意这个例子使用线程并且不是线程安全的,特别是函数 asyncio.gather)

import asyncio
for work in [1,2,3,4,5]:
    tasks.append(method_to_be_called(work))

results = await asyncio.gather(*tasks)

2)异步+多处理 https://github.com/jreese/aiomultiprocess


推荐阅读