由于后台semaphore_tracker进程而进行多进程冻结



>我正在为一个项目使用 Python 多处理,有时进程会冻结,显然发生这种情况的原因是我发现这个过程运行ps aux

python -c from multiprocessing.semaphore_tracker import main;main(39)

更多信息:

  • 如果我杀死进程,一切正常
  • 这个问题并不常见,这意味着可能会有几天运行一切正常而没有发生
  • 我正在使用 PyCharm
  • 我正在使用PyCharm远程解释器在服务器中运行此Python代码,有时使用SSH

问题:

  • 这个过程正在发生什么?
  • 为什么它不自己完成?
  • 它做了什么来冻结其他进程?
  • 如何避免这种情况?

根据文档:

在Unix上使用spawn或forkserver启动方法还将启动信号量跟踪器进程,该进程跟踪程序进程创建的未链接命名信号量。

为什么有人使用生成启动方法逃脱了我。在ms-windows上,这是一个(非常聪明的(笨蛋,因为该操作系统没有fork系统调用。

所以我怀疑Pycharm 强加使用forkserverstart 方法,因为它在内部使用多个线程,而标准的 UNIXforkstartmethod 不能很好地处理多线程程序。

尝试从 shell 运行项目。在类 UNIX 操作系统上,应默认为不需要信号量跟踪器进程的fork启动方法。

相关内容

  • 没有找到相关文章

最新更新