Автор оригинала: Doug Hellmann.
Самый простой способ создать второй процесс – создать экземпляр объекта Process
с целевой функцией и вызвать start ()
, чтобы он начал работать.
multiprocessing_simple.py
import multiprocessing def worker(): """worker function""" print('Worker') if __name__ '__main__': jobs [] for i in range(5): p multiprocessing.Process(targetworker) jobs.append(p) p.start()
Вывод включает слово «Worker», напечатанное пять раз, хотя оно может не получиться полностью чистым, в зависимости от порядка выполнения, поскольку каждый процесс конкурирует за доступ к потоку вывода.
$ python3 multiprocessing_simple.py Worker Worker Worker Worker Worker
Обычно более полезно иметь возможность запускать процесс с аргументами, указывающими ему, что делать. В отличие от threading
, для передачи аргументов в multiprocessing
Process
аргументы должны быть сериализованы с помощью pickle. В этом примере каждому рабочему передается номер для печати.
multiprocessing_simpleargs.py
import multiprocessing def worker(num): """thread worker function""" print('Worker:', num) if __name__ '__main__': jobs [] for i in range(5): p multiprocessing.Process(targetworker, args(i,)) jobs.append(p) p.start()
Целочисленный аргумент теперь включен в сообщение, выводимое каждым рабочим.
$ python3 multiprocessing_simpleargs.py Worker: 0 Worker: 1 Worker: 2 Worker: 3 Worker: 4