博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 之 进程池与线程池
阅读量:6426 次
发布时间:2019-06-23

本文共 1760 字,大约阅读时间需要 5 分钟。

1.什么时候用池?

    池的功能是限制启动的进程数或线程数。

   什么时候应该限制?

   当并发的任务数远远超过了计算机的承受能力时,即无法一次性开启过多的进程数或线程数时

就应该用池的概念将开启的进程数或线程数限制在计算机可承受的范围内 2.同步 vs 异步 同步,异步指的是提交任务的两种方式 同步:提交完任务后就在原地等待,直到任务运行完毕后拿到任务的返回值,再继续运行下一行代码 异步:提交完任务(绑定一个回调函数)后根本就不在原地等待,直接运行下一行代码,等到任务有返回值后会自动触发回调函数。 进程池:
# from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor # import os # import time # import random # # def task(n): #     print('%s run...' %os.getpid()) #     time.sleep(5) #     return n**2 # # def parse(future): #     time.sleep(1) #     res=future.result() #     print('%s 处理了 %s' %(os.getpid(),res)) # # if __name__ == '__main__': #     pool=ProcessPoolExecutor(4) #     # pool.submit(task,1) #     # pool.submit(task,2) #     # pool.submit(task,3) #     # pool.submit(task,4) # #     start=time.time() #     for i in range(1,5): #         future=pool.submit(task,i) #         future.add_done_callback(parse) # parse会在futrue有返回值时立刻触发,并且将future当作参数传给parse #     pool.shutdown(wait=True) #     stop=time.time() #     print('主',os.getpid(),(stop - start)) 线程池:
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor from threading import current_thread import os import time import random def task(n):     print('%s run...' %current_thread().name)     time.sleep(5)     return n**2 def parse(future):     time.sleep(1)     res=future.result()     print('%s 处理了 %s' %(current_thread().name,res)) if __name__ == '__main__':     pool=ThreadPoolExecutor(4)     start=time.time()     for i in range(1,5):         future=pool.submit(task,i)         future.add_done_callback(parse) # parse会在futrue有返回值时立刻触发,并且将future当作参数传给parse     pool.shutdown(wait=True)     stop=time.time()     print('主',current_thread().name,(stop - start))
 

转载于:https://www.cnblogs.com/fxc-520520/p/9322580.html

你可能感兴趣的文章
爱若和布若
查看>>
newifi mini 刷 OpenWRT
查看>>
eclipse部署tigase源码
查看>>
mysql 5.6 主从复制配制
查看>>
iPhoneX隐藏状态栏
查看>>
重读《JAVA与模式》之一
查看>>
一、Mycat 环境搭建
查看>>
关于Java Servlet编译的问题
查看>>
动态库和静态库及混合链接
查看>>
python3 md5加密
查看>>
为啥虚拟内存占用很多
查看>>
OpenSSL-RSA
查看>>
nvm 使用攻略
查看>>
优秀的jQuery自动补齐插件和多值输入插件推荐
查看>>
编程的智慧
查看>>
IOS--CALayer(图层类)
查看>>
进程与线程的理解和直观比喻
查看>>
常用的垃圾回收机制介绍
查看>>
在使用pyqt videopalyer不能播放MP4的解决方法
查看>>
django中timezone转换
查看>>