python实现通过队列完成进程间的多任务功能示例

  

本文实例讲述了python实现通过队列完成进程间的多任务功能。分享给大家供大家参考,具体如下:

  

1。通过队列完成进程间的多任务

        进口多处理         def download_data(问):   ”“下载数据”“”   #模拟从网上下载数据   data=[33 11日,22日,44]      #向队列中写入数据   临时的数据:   q.put(临时)   打印(“——数据下载完成并且已存入队列- - - - -”)         def analysis_data(问):   ””“数据处理”“”   waitting_analysis_data=https://www.yisu.com/zixun/list ()   #从队列中获取数据   而真正的:   data=q.get ()   waitting_analysis_data.append(数据)   如果q.empty ():   打破   打印(waitting_analysis_data)         def main ():   # 1。创建一个队列   q=multiprocessing.Queue ()   q1=多处理。过程(目标=download_data args=(q))   q2=多处理。过程(目标=analysis_data args=(q))   q1.start ()   q2.start ()         if __name__==癬_main__”:   main ()   之前      

 python实现通过队列完成进程间的多任务功能示例

  

2。进程池池/h4>   

在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务。那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程也需要消耗时间。第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率,因此我们不能无限制的根据任务开启或者结束进程。那么我们要怎么做呢?

  

在这里,要给大家介绍一个进程池的概念,定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务,等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务。如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空闲进程才能继续执行。也就是说,池中进程的数量是固定的,那么同一时间最多有固定数量的进程在运行。这样不会增加操作系统的调度难度,还节省了开闭进程的时间,也一定程度上能够实现并发效果。

  

案例:
        从多处理导入池   进口操作系统、时间、随机的         def工人(味精):   t_start=time.time ()   打印(“进程% s开始执行,进程号为% d %(味精、os.getpid ()))   # random.random()随机生成0 - 1之间的浮点数   time . sleep (random.random () * 2)   t_stop=time.time ()   打印(“进程”、味精、“执行完成,耗时% 0.2 f % (t_stop-t_start))         def main ():   #定义一个进程池,最大进程数为3   阿宝=池(3)   因为我在范围(10):   #池().apply_async(要调用的目标,(传递给目标的参数元组,))   #每次循环将会用空闲出来的子进程去调用目标   po.apply_async(工人,(我))      打印(“- - - - -开始- - - - -”)   #关闭进程池,关闭后阿宝不再接受新的请求   po.close ()   #等待订单中所有子进程执行完成,必须放在亲密语句之后   po.join ()      打印(“- - - - - - - - - -”)         if __name__==癬_main__”:   main ()   之前      

 python实现通过队列完成进程间的多任务功能示例

  

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》,《Python数据结构与算法教程》、《Python函数使用技巧总结》,《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python + MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》

  

希望本文所述对大家Python程序设计有所帮助。

python实现通过队列完成进程间的多任务功能示例