multiprocessing的返回值,作为python中另一个函数的输入


from multiprocessing import Pool
a=[1,2,3,4,5,6]
def func1(a):
return a**2
def func2(a):
x= np.zeros(1)
for i in a:
x += i
return x
if __name__ == "__main__":
pool = Pool( os.cpu_count())
results = pool.map(func1, a)
print(results)

然后我需要

func2(结果(这只是我问题的一个简单例子。请不要告诉我先将数组转移到numpy,因为我的func2比这个例子复杂得多。有人知道怎么做吗?我试过这样的东西,但没有用。

from itertools import repeat
from multiprocessing import Pool
import os
import numpy as np
a=[1,2,3,4,5,6]
def func1(a):
return a**2
def func2(a):
x= np.zeros(1)
for i in a:
x += i
return x
def func22():
if __name__ == "__main__":
pool = Pool( os.cpu_count())
results = pool.map(func1, a)
x= func2(results)
return x
print(func22())

非常感谢。

您只是嵌套有点错误。请记住,由于multiprocessing必须在每个新进程中重新加载模块,因此除了一次性初始化之外,所有内容都必须在if __name__保护范围内。

这是有效的。

from itertools import repeat
from multiprocessing import Pool
import os
import numpy as np
def func1(a):
return a**2
def func2(a):
x= np.zeros(1)
for i in a:
x += i
return x
def func22():
pool = Pool( os.cpu_count())
results = pool.map(func1, a)
x= func2(results)
return x
if __name__ == "__main__":
a=[1,2,3,4,5,6]
print(func22())

相关内容

  • 没有找到相关文章

最新更新