Python多重处理创建等待函数输入的后台线程

时间:2018-10-15 04:05:15

标签: python multithreading parallel-processing multiprocessing

是python线程的初学者。...我想创建一个程序,该程序在后台等待多个线程,并在某个时候异步执行函数f(x)。 f(x)确实要花很多时间(它计算梯度)。.

我计划将程序运行几个步骤(即100个步骤),并且每个步骤都有x的多个值(即10个值),但是我想以并行方式为所有10个值计算f(x)以节省时间。.

我查看了多处理python模块,但需要有关如何实现线程和进程的帮助。

2 个答案:

答案 0 :(得分:1)

就像python导入一样简单:

from multiprocessing import Pool

pool = Pool(5)
pool.map(f, [<list of inputs>])

现在,如果您的异步函数需要将其计算结果保存到同一位置,则将变得有些棘手:

from multiprocessing import Pool, Manager

l = Manager.list()

def func(l, *args, **kwargs): # you need to use the manager list as it's multiprocess safe
    blah blah

pool = Pool(5)
pool.map(func, [<list of inputs>]) 

# result will now be stored in l.

然后你去。

答案 1 :(得分:1)

如果您要运行可触发并行任务并管理进程池的脚本,则需要使用multiprocessing.Pool

但是,不清楚您的平台是什么;您可以考虑使用celery之类的方法来为您处理队列(或者使用AWS Lambda进行可能会从第三方基础架构管理中受益的更大规模的工作)。