2017-10-28 139 views
-2

我有一个需要制定一套30-40 API调用,每个揭开序幕,将需要轮询系统状况,然后从API检索查询“工作”的应用程序。每个工作都会花费不知道的时间 - 从即时到3-4分钟。的Python的多线程“工作”

这似乎是一个伟大的地方,应用多线程模型,其中I“派遣”这些工作,然后等待所有这些处理结果之前完成。我对Python的所有可用选项感到困惑,目前还不清楚我是否应该使用concurrent.futuresasynciogreenlets

如何评估这些选项,并导致可读性,Python的代码选择吗?哪个库是最流行和可重用的(换句话说,哪一个对我来说是一笔很好的投资)? 哪个最适合我的任务?

如何我的问题转化为Python的任何意见或指导3.6+,将不胜感激。

回答

2

我不太确定你在问什么。然而,多是与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

+0

谢谢!我主要是在寻求帮助,理解完成多线程或多处理的“最佳”或最普遍的方式。有大量的工具可用于此,并且尚不清楚自从在3.5左右向标准库添加“asyncio”之后哪些工具仍然相关! – esoterydactyl

+0

请勿使用asyncio。这是不值得有额外的时间来理解它。此外,我会建议在这里线程,因为你不是CPU绑定。 – xaav

+0

是的,多线程更合适。不知道为什么我有MP。 – pookie