在使用keras时,我发现我不能使用多处理.池. 经过一些故障排除,我认为导入keras是问题的根源,并创建了一个简单的例子。在
import keras
from multiprocessing import Pool
def foo(q,y):
print("In foo")
return q,y
def test(a, b):
x = []
if __name__ == '__main__':
p = Pool(5)
print("Starting")
x = p.starmap(foo, [[a,2],[b,4]])
print("Finished")
p.close()
p.join()
print(x)
if __name__ == '__main__':
test(1,3)
输出
^{pr2}$当运行它输出“开始”然后挂起。如果我删除keras导入,它运行良好,并按预期输出[(1,2),(3,4)]。你知道我怎么解决这个问题吗?或者是什么原因造成的?我还不完全理解python是如何进行多处理的。谢谢!在
我用的是Python和斯派德。在
这里有一个对我有用的解决方案,因为子进程不需要导入kera。在
我怎么找到这个解决方案的。我运行原始代码,它正常挂起。当它挂起的时候,我注释掉了导入行并保存了文件以备下次测试。当我这么做的时候,代码以某种方式完成了执行。我测试了好几次,以确保这不是侥幸。编辑已运行程序的文件如何影响其运行?然后,我认为if uu name_qu=='\'uu main_Uu'可能类似于c中的if(fork()==0),所以我将它放在导入周围,这样子进程就不会运行它。就像我在运行时手动注释并保存。我测试了它,它起作用了。在
编辑:如果你使用If-name-yu==\uuu-main,那么继承会被破坏,因为它们看起来并不是main。mp_main是游泳池工作人员的名字,这也起作用
相关问题 更多 >
编程相关推荐