Добрый день
В программе необходимо иметь общую переменную, в данном случае список deque, между процессами. При использовании модуля multiprocessing, каждый процесс работает с отдельной копией списка, не используя общую переданную переменную. При использовании модуля threading.Thread каждый поток работает с общим списком, так как нужно. В программе необходимо использовать именно модуль multiprocessing. Прошу подсказать как расшарить переменную между процессами модуля multiprocessing.
# -*- coding: utf-8 -*-
import multiprocessing as mp
import threading
import time
import random
from collections import deque
class ManageUpdate(mp.Process):
# class ManageUpdate(threading.Thread):
def __init__(self, queue, condition):
# threading.Thread.__init__(self)
mp.Process.__init__(self)
self.queue = queue
self.condition = condition
def run(self):
while True:
rand_data = '%d' % random.randint(0, 256)
self.condition.acquire()
print 'condition acquire by %s' % self.name
self.queue.append(rand_data)
print 'after change', self.queue
print '===' * 10
print '\n'
self.condition.notify()
self.condition.release()
time.sleep(random.random())
if __name__ == '__main__':
condition = mp.Condition()
d = deque(maxlen=9)
d.append('CHECK CHECK CHECK')
for count in range(5):
worker = ManageUpdate(d, condition)
worker.daemon = True
worker.start()
time.sleep(3)