最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
先给出一个多进程应用的最小代码。
import multiprocessing as mp
def produce(q):
“”“生产者”“”
for i in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
q.put(i)
print(f"Producer quit.")
def consume(q):
“”“消费者”“”
while True:
r = q.get()
if r == 9:
break
print(“Consumer quit.”)
if name == “main”:
q = mp.Queue()
consumer = mp.Process(target=consume, args=(q,))
consumer.start()
producer = mp.Process(target=produce, args=(q,))
producer.start()
producer.join()
consumer.join()
print(“Main quit.”)
这段代码中,主进程构建了一个队列,然后派生两个子进程:一个生产者与一个消费者。生产者进程按顺序将一个包含从1到9的数字列表中的元素逐个填充到队列中。消费者进程逐个将队列中的元素取出,并在读取到最后一个元素的时候退出。这段代码运行的输出如下:
Producer quit.
Consumer quit.
Main quit.
实际情况中,为了安全起见会限制队列的最大容量,以避免内存被占尽。在队列初始化的时候可以通过 maxsize
参数指定允许的最大尺寸。
生产者与消费者的函数定义无变化,这里省略。
if name == “main”:
q = mp.Queue(maxsize=3) # 指定队列允许存储的最大元素数量
consumer = mp.Process(target=consume, args=(q,))
consumer.start()
producer = mp.Process(target=produce, args=(q,))
producer.start()
producer.join()
consumer.join()
print(“Main quit.”)
此时运行全部代码,输出如下:
Producer quit.
Consumer quit.
Main quit.
在限制队列大小后,应用依旧可以正常退出。
但是,如果你不小心忘记了队列存在大小限制,然后无意间修改了消费者进程的代码:
生产者代码无变动,省略。
def consume(q):
“”“消费者”“”
while True:
r = q.get()
if r == 3: # 当读取到3时,停止消费队列。
break
print(“Consumer quit.”)
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!