2016-11-15 74 views
0

我有适用于Windows的Python代码,但是在Linux上运行时,它只是挂起。我使用的是JPype,所以我怀疑多个共享进程试图使用相同的管道来访问Java(不同的进程被创建但挂在JPype线)可能会有一些问题。有什么办法可以在Pathos中强制产生以复制Windows实现? (例如set_start_method或常规多处理库中的get_context?)Pathos:在Linux上强制产卵

谢谢。

回答

0

要回答我的问题(这是一个有点讨厌),而是通过代码,你可以挖后:

import multiprocess.context as ctx 
ctx._force_start_method('spawn') 

哪愉快解决我与JPype挂遇到的问题。 Linux和Windows的区别在于,随着Windows衍生出一个新的进程,一个新的JVM启动(jpype.startJVM()),而分叉的进程必须使用同一个(所以我猜测有多个进程正在尝试使用相同的管道到Java)。据我所知,set_start_method似乎没有实现。

+0

嗯......这是一个很好的解决方案。我认为可能在'multiprocess'中使用'ForkingPickler',它可以让窗口酸洗行为(即零共享对象)......但我认为你可能已经找到了正确的方法来做到这一点。 –