python--线程与进程

1.GIL

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

2.主程序

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()获取 队列,并发出信号通知生产者任务完成                                                                                                                                                                                                                                                                                                                                                                                                                                                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS 数据栈

谢谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值