这是一个有点普遍的问题,没有特定的代码示例。我试图从第三方库并行调用方法的调用。使用multiprocessing.Pool将是我想要的,但它失败了,因为该方法不是可以腌制的。使用扭曲的东西会有点过分。
单个呼叫是独立的,程序可以阻止等待整个呼叫完成。我确实需要将一些参数传递给并行调用,这可以通过一系列dicts来完成。所以我需要达到相当于
p = multiprocessing.Pool(count)
p.map(my_wrapper_around_some_3rd_party_method, my_list_of_dicts)
当第三方方法不适合时。
我应该看一下明显的python习语或模式吗?
答案 0 :(得分:0)
也许这会有所帮助: https://khinsen.wordpress.com/2012/02/06/teaching-parallel-computing-in-python/
在他的情况下,numpy.sqrt()是不可挑选的,他在一个本地函数中调用它,并给出了map。
答案 1 :(得分:0)
你可以使用multiprocess
,它是multiprocessing
的一个能够腌制大多数python对象的分支。
>>> import multiprocess as mp
>>>
>>> pool = mp.Pool()
>>> import numpy as np
>>> pool.map(np.sqrt, range(4))
[0.0, 1.0, 1.4142135623730951, 1.7320508075688772]
>>> pool.map(lambda x: x**2, range(4))
[0, 1, 4, 9]
我是作者,您可以在此处获取:https://github.com/uqfoundation或使用pip install
。