【问题标题】:Why is my multiprocessing program spawning processes infinitely?为什么我的多处理程序会无限生成进程?
【发布时间】:2020-06-18 14:30:58
【问题描述】:
import time
from multiprocessing import Pool, RawArray, sharedctypes
from ctypes import c_int



def init_worker(X):
    print(f"{X}")


def worker_func(i):
    print(f"{X}")
    time.sleep(i) # Some heavy computations
    return 

# We need this check for Windows to prevent infinitely spawning new child
# processes.
if __name__ == '__main__':

    X =sharedctypes.RawValue(c_int)
    X=3

    with Pool(processes=4, initializer=init_worker, initargs=(X)) as pool:
        pool.map(worker_func, [1,2,3,4])


    print(X)

--- 我只是想在每个子进程中打印 X 的值。这是一个玩具程序,用于检查我是否可以共享一个值 并使用多个进程对其进行更新。

【问题讨论】:

    标签: python-multiprocessing pool spawning


    【解决方案1】:

    该程序产生无限数量的进程,因为它在 initargs=(X) 中的 X 之后没有 ,(逗号);它应该是 initargs=(X,) 。这是因为,如果省略逗号会导致错误。

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多