的Python的多线程“工作”
问题描述:
我有一个需要制定一套30-40 API调用,每个揭开序幕,将需要轮询系统状况,然后从API检索查询“工作”的应用程序。每个工作都会花费不知道的时间 - 从即时到3-4分钟。的Python的多线程“工作”
这似乎是一个伟大的地方,应用多线程模型,其中I“派遣”这些工作,然后等待所有这些处理结果之前完成。我对Python的所有可用选项感到困惑,目前还不清楚我是否应该使用concurrent.futures
或asyncio
或greenlets
。
如何评估这些选项,并导致可读性,Python的代码选择吗?哪个库是最流行和可重用的(换句话说,哪一个对我来说是一笔很好的投资)? 哪个最适合我的任务?
如何我的问题转化为Python的任何意见或指导3.6+,将不胜感激。
答
我不太确定你在问什么。然而,多是与Python真的很容易,如果你只需要触发的工作,那么下面可能会有所帮助:
import multiprocessing as mp
def print_index(x):
print(x)
jobs = []
for i in range(3):
p = mp.Process(target=print_index, args=(i,))
jobs.append(p)
p.start()
for job in jobs: #wait for the 3 jobs to finish...
job.join()
您可以了解更多关于通过文档多处理:https://docs.python.org/3/library/multiprocessing.html
谢谢!我主要是在寻求帮助,理解完成多线程或多处理的“最佳”或最普遍的方式。有大量的工具可用于此,并且尚不清楚自从在3.5左右向标准库添加“asyncio”之后哪些工具仍然相关! – esoterydactyl
请勿使用asyncio。这是不值得有额外的时间来理解它。此外,我会建议在这里线程,因为你不是CPU绑定。 – xaav
是的,多线程更合适。不知道为什么我有MP。 – pookie