为什么 Python 中的共享价值会产生额外的流程

Why Shared Value in Python Creates Extra Processes

通常当我生成新进程时,我只会有 1 个进程内 python 代码。 但是当我使用共享内存(共享值)时,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 中创建新的额外进程?

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

我没有仔细阅读文档,但您可以尝试使用共享内存的其他方法,即 shared ctypes objects like multiprocessing.Value or multiprocessing.Array