代码之家  ›  专栏  ›  技术社区  ›  mortymacs

为什么python中的共享值会创建额外的进程

  •  2
  • mortymacs  · 技术社区  · 6 年前

    通常,当我生成新进程时,我只有1个进程内python代码。 但是当我使用共享内存(shared memory,shared value)时,python将在我自己的进程之外创建另一个新进程。

    示例(显示1个过程):

    p = multiprocessing.Process(target=mytarget)
    p.daemon = True
    p.start()
    

    示例(显示了2个进程,而我只生成了1个进程):

    shared = Manager().Value(int, 0)
    p = multiprocessing.Process(target=mytarget, args=(shared))
    p.daemon = True
    p.start()
    

    有没有什么方法可以避免在python中创建新的额外进程?

    1 回复  |  直到 6 年前
        1
  •  2
  •   running.t    6 年前

    根据 multiprocessing.Manager 文档调用 Manager() 创建单独的服务器进程,负责管理该管理器中共享的对象。这就是你能看到的额外过程。

    我没有仔细阅读文档,但是您可以尝试使用共享内存的其他方法,例如。 shared ctypes objects 喜欢 multiprocessing.Value multiprocessing.Array