Для тех, кто застрял в Windows, которая не поддерживает fork()
(если не используется CygWin), pv-ответ не работает. Глобальные переменные недоступны для дочерних процессов.
Вместо этого вы должны передать совместно используемую память во время инициализации Pool
/ Process
следующим образом:
#! /usr/bin/python
import time
from multiprocessing import Process, Queue, Array
def f(q,a):
m = q.get()
print m
print a[0], a[1], a[2]
m = q.get()
print m
print a[0], a[1], a[2]
if __name__ == '__main__':
a = Array('B', (1, 2, 3), lock=False)
q = Queue()
p = Process(target=f, args=(q,a))
p.start()
q.put([1, 2, 3])
time.sleep(1)
a[0:3] = (4, 5, 6)
q.put([4, 5, 6])
p.join()
(это не тупой код и не хороший код, но он иллюстрирует суть; -)