Pythonic多线程"工作"

时间:2017-10-28 18:39:00

标签: python asynchronous async-await python-3.6

我有一个应用程序需要设置30-40个API调用,每个调用启动查询" jobs"需要轮询状态,然后从API检索。每项工作将花费不明的时间 - 从即刻到3-4分钟。

这似乎是应用多线程模型的好地方,其中我发送"发送"这些工作然后在处理结果之前等待所有这些工作完成。我对Python中可用的所有选项感到困惑,而且我不清楚是否应该使用concurrent.futuresasynciogreenlets

如何评估选项并做出可选的Pythonic代码?哪些库是最普遍和可重复使用的(换句话说,哪一个对我来说是一个很好的投资)? 哪个最适合我的任务?

有关如何将我的问题转换为Python 3.6+的任何建议或指导将不胜感激。

1 个答案:

答案 0 :(得分: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