我有在Windows上工作的Python代码,但是在Linux上运行时它只是挂起。我使用的是jype,因此我怀疑多个共享进程试图使用同一管道访问Java时可能存在一些问题(创建了不同的进程,但挂在jype行上)。有没有办法强制在Pathos产卵复制Windows的实现?(如set_start_method,或get_context在常规的多处理库?)
谢谢。
为了回答我自己的问题(这有点讨厌),但是在深入研究代码之后,您可以:
import multiprocess.context as ctx
ctx._force_start_method('spawn')
这愉快地解决了我与jype挂的问题。Linux和Windows之间的区别在于,当Windows生成一个新进程时,会启动一个新的JVM(jpyp . startjvm()),而分叉的进程必须使用相同的JVM(所以我猜有多个进程试图使用相同的管道到Java)。set_start_method似乎没有实现,据我所知