是python线程的初学者。...我想创建一个程序,该程序在后台等待多个线程,并在某个时候异步执行函数f(x)。 f(x)确实要花很多时间(它计算梯度)。.
我计划将程序运行几个步骤(即100个步骤),并且每个步骤都有x的多个值(即10个值),但是我想以并行方式为所有10个值计算f(x)以节省时间。.
我查看了多处理python模块,但需要有关如何实现线程和进程的帮助。
答案 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进行可能会从第三方基础架构管理中受益的更大规模的工作)。