python实现通过队列完成进程间的多任务功能示例实现通过队列完成进程间的多任务功能示例
主要介绍了python实现通过队列完成进程间的多任务功能,结合实例形式分析了Python队列完成进程间的多任务
以及进程池pool相关操作技巧,需要的朋友可以参考下
本文实例讲述了python实现通过队列完成进程间的多任务功能。分享给大家供大家参考,具体如下:
1.通过队列完成进程间的多任务通过队列完成进程间的多任务
import multiprocessing
def download_data(q):
"""下载数据"""
# 模拟从网上下载数据
data = [11, 22, 33, 44]
# 向队列中写入数据
for temp in data:
q.put(temp)
print("----数据下载完成并且已存入队列----")
def analysis_data(q):
"""数据处理"""
waitting_analysis_data = list()
# 从队列中获取数据
while True:
data = q.get()
waitting_analysis_data.append(data)
if q.empty():
break
print(waitting_analysis_data)
def main():
# 1.创建一个队列
q = multiprocessing.Queue()
q1 = multiprocessing.Process(target=download_data, args=(q,))
q2 = multiprocessing.Process(target=analysis_data, args=(q,))
q1.start()
q2.start()
if __name__ == '__main__':
main()
2.进程池进程池pool
在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执
行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程也需要消耗时间。第二即便开启了
成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率。因此我们不能无限制的根据任务开启或者结
束进程。那么我们要怎么做呢?
在这里,要给大家介绍一个进程池的概念,定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来
处理任务,等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务。如果有很多任务需要执行,池中的进程
数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。也就是说,池中进程的数量是固定的,
那么同一时间最多有固定数量的进程在运行。这样不会增加操作系统的调度难度,还节省了开闭进程的时间,也一定程度上能
够实现并发效果。
案例:案例:
评论0
最新资源