python--进程

1.GIL

在大多数系统上,python同时支持消息传递和基于线程的并发编程。但实际上python的线程受限很多,为了最大程度保护线程的安全,Python使用了全局解释器锁(Global Interpreter Lock),在任意指定时刻只允许单个线程运行。

2.code

import multiprocessing  
  
def consumer(input_q):  
    while True:  
        #q.get()返回q中一个项,如果q为空,此方法将阻塞,直到队列中有项可用为止  
        item=input_q.get()  
        print(item)  
        #消费者使用此方法发出信号,表示q.get()返回的项已经被处理完毕。  
        input_q.task_done()  
          
def producer(sequence,output_q):  
    for item in sequence:  
        #将项放入队列  
        output_q.put(item)  
          
  
if __name__=='__main__':  
    q=multiprocessing.JoinableQueue()  
    '''''consumer processing'''  
    consumer_p=multiprocessing.Process(target=consumer,args=(q,))  
    consumer_p.daemon=True  
    consumer_p.start()  
      
      
    '''''producing many Queues,run producer'''  
    sequence=[1,2,3,4,5]  
    producer(sequence,q)  
    '''''waiting processing'''  
    q.join()

JoinablQueue:调用方法multiprocess.JoinableQueue()
创建可连接的共享进程队列。如同一个队列数据,通知一个队列另一个队列的完成情况。通知进程是使用共享的信号和条件变量实现的。
在本实例中,首先使用producer 函数将处理项放入q=multiprocessing.JionableQueue()队列中 ,然后调用consumer函数,使用q.get()获取 队列,并发出信号通知生产者任务完成

posted @ 2018-01-05 17:31  天波-风客  阅读(137)  评论(0编辑  收藏  举报