python - Python中多处理后的后处理结果
问题描述
所以我有一个简单的 MP 代码,它就像一个魅力。但是,当我对通过 MP 生成的数据进行非常简单的后处理时,代码不再起作用。它永远不会停止和运行!这是代码(它再次完美运行):
import numpy as np
from multiprocessing import Pool
n = 4
nMCS = 10**5
def my_function(j):
result = []
for j in range(nMCS // n):
a = np.random.rand(10,2)
result.append(a)
return result
if __name__ == '__main__':
__spec__ = "ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>)" # this is because I am using Spyder!
pool = Pool(processes = n)
data = pool.map(my_function, [i for i in range(n)])
pool.close()
pool.join()
#final_result = np.concatenate(data) ### this is what ruins my code! ###
同时,如果我final_result = np.concatenate(data)
在最后添加,它永远不会起作用!我正在使用Spyder,如果我只是final_result = np.concatenate(data)
在 MP 完成后在控制台中输入,它会给我我想要的,即一个连接列表。但是,如果我把那条简单的行放在最后的主程序中,它就是行不通的。谁能告诉我如何解决这个问题?
PS这是我生成的一个非常简单的示例,因此您可以了解发生了什么;我真正的问题要复杂得多,在完成 MP 后我无法进行后期处理。
解决方案
你的问题是,当你运行时np.concatenate
,它没有在main函数中完成。我怀疑您遇到的问题是 Spyder 特有的,但更新缩进应该可以解决它。
推荐阅读
- reactjs - 我如何验证开始日期是否晚于 Yup 的结束日期?
- java - 如何在 rest doc 中记录链接
- java - 返回类型为“T”且方法参数由通配符组成时,返回类型与方法参数冲突
- c# - 如何从 web.config 读取多个位置部分
- css - 如何将css规则应用于第一个div匹配类
- java - 在 JNI 上调用 AttachCurrentThread 成本高吗?
- angularjs - Angular JS 中是否有来自 React JS 的等价道具?
- r - 如何使线条片段与ggplot中的单个点匹配
- python - 将组附加到熊猫数据框时导致值错误
- python - 如何输出字典值的排列