python_多进程_Queue


Skip to end of metadata

说明:疑惑处:如果只开一个进程执行queue.get(),是否代表只是单进程进程处理,处理完了之后,在去取下一个任务


由于Queue对象负责进程之间的对象传输,因此第一个问题就是如何在两个进程之间共享这个Queue对象本身。Queue对象只能使用继承(inheritance)的方式共享。这是因为Queue本身基于unix的Pipe对象实现,而Pipe对象的共享需要通过继承。因此,在一个典型的应用实现模型当中,应该是父进程创建Queue,然后创建子进程共享该Queue,由父进程和子进程分别读写。例如下面的这个例子:该列子是子进程读,父进程写

 

 

import multiprocessing
  
= multiprocessing.Queue()
  
def reader_proc():
    print q.get()
  
reader = multiprocessing.Process(target=reader_proc)
reader.start()
  
q.put(100)
reader.join()

 

 

另一种实现方式是父进程创建Queue和创建其他多个子进程,有的子进程读Queue,有的子进程写Queue,例如:

import multiprocessing
import os
= multiprocessing.Queue()
 
 
def writer_proc():
    for in range(10):
        os.system('pwd')
        q.put(100)
 
def reader_proc():
    while True:
        print(q.get())
 
writer = multiprocessing.Process(target=writer_proc)
writer.start()
reader = multiprocessing.Process(target=reader_proc)
reader.start()
writer.join()
reader.join()
阅读更多
个人分类: Python
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭