嗨stackoverflow用户,
我试着查了一下,但找不到答案:我本质上喜欢并行处理一个函数(独立进程!),并且该函数有一个可迭代的 ( x
)和几个常量参数 ( k
, d
)。这是一个非常简化的示例:
from multiprocessing import *
def test_function(args):
k = args[0]
d = args[1]
x = args[2]
del args
return k*x + d
if __name__ == '__main__':
pool = Pool(processes=2)
k = 3.
d = 5.
constants = [k,d]
xvalues = range(0,10)
result = [pool.apply_async(test_function, constants.append(i)) for i in xvalues]
output = [r.get() for r in result]
print output
#I expect [5.0, 8.0, 11.0, 14.0, 17.0, 20.0, 23.0, 26.0, 29.0, 32.0]
这给了我以下错误消息:
Traceback (most recent call last):
File "test_function.py", line 23, in <module>
output = [r.get() for r in result]
File "C:\Program Files\Python2.7\lib\multiprocessing\pool.py", line 528, in get
raise self._value
TypeError: test_function() argument after * must be a sequence, not NoneType
所以我的问题是:
此错误消息实际上是什么意思?
如何修复它以获得预期的结果(参见代码示例的最后一行)?
对于调用 apply_sync 的线路是否有更好/工作/优雅的方式?
仅供参考:我是 python 新手,请多多包涵,如果我的帖子需要更多详细信息,请告诉我。
非常感谢您的任何建议!