网络编程——multiprocessing内置消息队列、IPC机制、生产者消费者模型、线程、GIL全局解释器锁


一、multiprocessing内置消息队列

消息队列是先进先出的,用于进行进程之间信息传递的。

from multiprocessing import Queue

q = Queue(3) # 设置队列长度

q.put(123) # 向队列添加元素
q.put(1234)
print("队列是否填满:",q.full()) # 判断队列是否填满
q.put(12345)
print("队列是否填满:",q.full())

print(q.get()) # 从队列取出元素
print("队列是否为空:",q.empty()) # 判断队列是否为空
print(q.get())
print(q.get_nowait()) # 从队列取一个元素,如果队列为空,则报错
print("队列是否为空:",q.empty())
print(q.get_nowait()) # 从队列取一个元素,如果队列为空,则报错

在这里插入图片描述

full()
empty()
get_nowait()
三个方法不能在并发的情况下精确使用。


二、IPC机制

IPC机制主要是用来处理以下几种情况的:

  1. 主进程与子进程之间的信息交互
  2. 子进程与子进程之间的信息交互
    其本质是不同内存空间的进程数据交互
from multiprocessing import Process, Queue

def dask(q, cont):
    print("子进程%d获取了一个数据信息:%s"%(cont, q.get()))

def se(q,cont , txt):
    q.put(txt)
    print("子进程%d存放了一个数据信息:%s"%(cont, txt))

if __name__ == '__main__':
    q = Queue(5)
    p1 = Process(target=dask, args=(q, 1))
    p2 = Process(target=se, args=(q, 2, "hello"))
    p2.start()
    p1.start()

在这里插入图片描述


三、生产者消费者模型

生产者指生成数据的部分
消费者指使用数据的部分

生产者消费者模型主要怕用于解决生产和使用之间的关系,生产过快或者消费过快都是不行的,此时便需要一个平衡,所以产生了生产者消费者模型。

在这里插入图片描述

from multiprocessing import Process,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值