【问题标题】:Can Python multiprocessing process be launched from OTHER than __main__?可以从 __main__ 以外的 OTHER 启动 Python 多处理进程吗?
【发布时间】:2019-11-22 07:18:28
【问题描述】:

我正在 Debian 上用 Python 3.8 编写一个框架,它将启动一些多处理进程。我希望在 ma​​in 以外的功能中完成进程的配置和启动。 ma​​in 文件将由框架的最终用户编写,他们不需要了解这些过程。因此,我尝试将配置和启动进程的代码放在 ma​​in 将调用的辅助函数或类方法中。

我发现一旦启动器函数/方法退出进程就会死掉。即使启动器功能/方法在与仍在运行的 ma​​in 相同的进程中运行(我认为)也是如此。在启动器函数/方法退出之前,我已经在启动器函数/方法中放置了很长时间,而且这些进程似乎已经存在了很长时间。

我尝试设置“守护进程”标志,但这似乎并没有解决问题。如果这确实是多处理的限制,我可以指示我的框架的用户始终将一些样板启动器代码放在他们的文件中,但这似乎很笨重。感谢所有帮助!

【问题讨论】:

  • 我发现了一些我的旧代码,我在其中成功地从 main 之外启动了进程。不知道为什么我现在不能这样做。一旦我弄清楚了,我会发布。
  • 旧代码使用 Python3.7 运行。我认为这可能是 Python3.8 特有的问题,但似乎并非如此:Python3.7 也有问题。试图看看我当前的代码和旧代码有什么不同......

标签: python linux multiprocessing debian


【解决方案1】:

启动进程的函数只将进程返回到ma​​in,而不是进程正在使用的托管队列。我更改为返回带有进程和托管队列的字典,一切正常。即使 ma​​in 不使用队列也是如此。

【讨论】:

    猜你喜欢
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多