多进程如何共享公共队列



我想启动4个进程,当计数器可被100整除时,该进程会将一个整数放入队列。与此同时,另一个进程会不断读取并打印它。请更正我的代码以运行。。。我得到一个错误〔'Queue'对象不可迭代〕

from multiprocessing import Lock, Process, Queue, current_process
import time
import queue 

def doFirstjob(process_Queue):
i=0
while True:
if i%100==0:
process_Queue.put(i)
else:
i+=1

def doSecondjob(process_Queue):
while(1):
if not process_Queue.Empty:
task = process_Queue.get()
print("task: ",task)
else:
time.sleep(0.2)
def main():
number_of_processes = 4
process_Queue = Queue()
processes = []
process_Queue.put(1)
q = Process(target=doSecondjob, args=(process_Queue))
q.start()
for w in range(number_of_processes):
p = Process(target=doFirstjob, args=(process_Queue))
processes.append(p)
p.start()

if __name__ == '__main__':
main()

您收到错误,因为Process在arguments/args中需要一个列表/元组。

此外,它应该是空的,而不是空的。

将代码更改为以下内容。

from multiprocessing import Lock, Process, Queue, current_process
import time
import queue 

def doFirstjob(process_Queue):
i=0
while True:
print("foo")
if i%100==0:
process_Queue.put(i)
else:
i+=1

def doSecondjob(process_Queue):
while(1):
print("bar")
if not process_Queue.empty:
task = process_Queue.get()
print("task: ",task)
else:
time.sleep(0.2)
def main():
number_of_processes = 4
process_Queue = Queue()
processes = []
process_Queue.put(1)
q = Process(target=doSecondjob, args=(process_Queue,))
q.start()
for w in range(number_of_processes):
p = Process(target=doFirstjob, args=(process_Queue,))
processes.append(p)
p.start()

if __name__ == '__main__':
main()

最新更新