linux - Pathos:在 Linux 上强制生成

标签 linux python-3.5 python-multiprocessing spawn pathos

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

谢谢。

最佳答案

回答我自己的问题(这有点讨厌)但是在深入研究代码之后你可以:

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

这很高兴地解决了我遇到的 JPype 挂起问题。 Linux 和 Windows 之间的区别在于,当 Windows 生成一个新进程时,将启动一个新的 JVM (jpype.startJVM()),而 fork 进程必须使用相同的进程(所以我猜有多个进程正在尝试使用相同的管道到 Java)。据我所知,set_start_method 似乎尚未实现。

关于linux - Pathos:在 Linux 上强制生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40615795/

相关文章:

python multiprocessing,管理器启动进程生成循环

linux - Jenkins : "javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;"

c - Busybox udhcpd vfork 启动两个进程

python - 如何在不覆盖父函数的情况下将值返回给父类(super class)?

python - 是否可以在多处理中运行 `mock.patch` 函数(使用 `spawn` )?

Python:如何并行运行两个函数

python - 有没有类似 Python 的 pty.fork for Ruby 的东西?

c++ - Linux 在文本模式下绘图(无图形界面,桌面)

python - 除了 asyncio.Queue.put 之外,都错了?

python - 子进程权限被拒绝