Найти - Пользователи
Полная версия: multiprocessing - проблема с расшариванием переменных между процессами
Начало » Python для новичков » multiprocessing - проблема с расшариванием переменных между процессами
1
bohrman
Добрый день

В программе необходимо иметь общую переменную, в данном случае список 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)
doza_and
Если коротко: https://docs.python.org/2/library/multiprocessing.html#pipes-and-queues
Если смотреть подробнее это не совсем общий объект.
Возможно вам нужно Shared memory
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB