为什么 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
通常当我生成新进程时,我只会有 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