Почему моя многопроцессорная программа порождает процессы бесконечно? - PullRequest
0 голосов
/ 18 июня 2020
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 в каждом подпроцессе. Это игрушечная программа, которая проверяет, могу ли я поделиться значением и обновить его, используя несколько процессов.

1 Ответ

0 голосов
/ 19 июня 2020

Эта программа порождает бесконечное количество процессов, потому что нет (запятой) после X в initargs = (X); это должно быть initargs = (X,). Причина в том, что отсутствие запятой вызывает ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...