Форум сайта python.su
0
Всем привет.
Имеется скрипт, с мультипроцессингом и очередями. Проблема довольно таки странная. Вчера код работал. После перезагрузки компьютера перестал. Начал копать в чем трабл, и выяснилось вот что.
Имеется участок вида:
from multiprocessing import Process, Queue q_data = Queue() def Worker(): while not q_data.empty(): #some code print q_data.get() if __name__ == '__main__': for i in xrange(5): q_data.put(i) procs = [] for i in xrange(5): p = Process(target=Worker) p.start procs.append(p) for p in procs: p.join()
Отредактировано Galvanize (Апрель 14, 2014 15:29:53)
Офлайн
36
GalvanizeИ это не удивительно. В каждом запущенном процессе Ваша очередь переопределяется. Чтобы процессы работали с одной очередью, ее нужно передавать как параметр.
т.к. мне выдает, что очереди пустые
def worker(queue): ... def main(): queue = Queue() ... for i in range(5): p = Process(target=worker, args=(queue,)) p.start() ...
Офлайн
15
Может кому полезным будет: https://medium.com/p/40e9b2b36148
Офлайн