Запуск параллельных процессов из функции - PullRequest
0 голосов
/ 08 ноября 2019

Я хочу запустить несколько процессов, вызвав одну функцию:

, что я хочу поместить в функцию, и только вызвать эту функцию:

def func():
    print("hey")

if __name__ == '__main__':
    processes = []
    processes.append(Process(target=func))
    processes.append(Process(target=func))

    for process in processes:
        process.start()

чтокод выглядит так:

from multiprocessing import Process, Manager


def multi():
    def func():
        print("hey")

    if __name__ == '__main__':
        processes = []
        processes.append(Process(target=func))
        processes.append(Process(target=func))

        for process in processes:
            process.start()

#Run function
multi()

Я получаю ошибку:

new_handle = reduction.steal_handle(parent_pid, pipe_handle)
  File *path*, line 82, in steal_handle
    _winapi.PROCESS_DUP_HANDLE, False, source_pid)
OSError: [WinError 87] The parameter is incorrect

1 Ответ

1 голос
/ 12 ноября 2019

Основная функция не должна выполняться внутри многофункционального устройства. Также, если вы хотите, чтобы func был многопроцессорным, поместите его вне multi. Вы можете переписать код как:

from multiprocessing import Process

def func():
    print("hey")

def multi():
    procs=[]
    no_of_processes=2 #say
    for i in range(no_of_processes):
        Process(target=func).start()

    for proc in procs:
        proc.join()

if __name__=='__main__':
    multi()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...