标签:pip3 BMI 导致 port lis 目的 app 上下 class
在python2中没有提供,在python3之后才提供
作用:保证程序中最多可以创建的线程的个数
import time
from concurrent.futures import ThreadPoolExecutor
def task(n1,n2):
time.sleep(1)
print(‘星空不问赶路人‘)
pool = ThreadPoolExecutor(10) # 创建线程池
for i in range(100):
pool.submit(task,i,1)
pool.shutdown(True) # 等线程池中任务执行完毕之后,再继续往后走
print(‘岁月不负有心人‘)
import time
from concurrent.futures import ThreadPoolExecutor
def task(arg):
time.sleep(1)
print(‘星空不问赶路人‘)
return ‘岁月不负有心人‘
ret = pool.map(task,range(1,20)) # 具有返回值
print(‘end‘,ret)
pool.shutdwon(True)
for i in ret:
print(i) # 直接输出i
import time
from concurrent.futures import ThreadPoolExecutor
def task(n1,n2)
time.sleep(1)
print(‘星空不问赶路人‘)
return ‘岁月不负有心‘+str(n1+n2)
pool = ThradPoolExecutor(10) # 创建进程
future_list = []
for i in range(20):
fu = pool.submit(task,i,1) # 具有返回值
future_list.append()
pool.shutdown(True)
for i in future_list:
print(i.result()) # 后面加result
进程池
import time
from concurrent.futures import ProcessPoolExecutor
def task(n1,n2):
time.sleep(1)
print(‘many are called,few are chosen‘)
pool = ProcessPoolExecutor(10)
if __name__ == ‘__main__‘:
for i in range(20):
pool.submit(task,i,1)
pool.shutdown(True)
print(‘early birds get the worm‘)
引入进程池和线程池的目的:限制创建线程或进程的个数,防止无节制创建线程,导致效率降低
pool = ProcessPoolExecutor(10)中的10表示最多创建10个
创建线程越多越好?
不是,线程创建的如果过多。导致线程上下文切换过多,效率降低
协程非常节省资源,实际不存在,程序员创建的
协程又可以称为‘微线程’,实际上是让一个线程轮番去执行一些任务
协程+IO切换的功能就可以完成并发的操作
协程+IO切换本质上节省资源
协程+IO切换的实例
gevent(内部依赖greenlet)
pip3 install gevent
from gevent import monkey
monkey.patch_all()
import time
import gevent
def eat():
print(‘夜已沉默‘)
time.sleep(3)
print(‘人生风景在游走‘)
def play():
print(‘心事向谁说‘)
time.sleep(3)
print(‘每当孤独我回首‘)
g1 = gevent.spawn(eat)
g2 = gevent.spawn(play)
gevent.joinall([g1,g2])
?
# 夜已沉默
# 心事向谁说
# 人生风景在游走
# 每当孤独我回首
进程/线程/协程的区别:
进程是计算机中分配资源最小的单位,线程是计算机中被cpu调度最小的单位;
协程又称为"微线程",是基于人为代码创造的,而进程和线程是计算机中真是存在的, 一个进程中可以创建多个线程,且资源共享,一个线程可以创建多个协程
计算密集型,多进程
IO密集型,多线程/协程+IO切换
单纯的协程是没有办法提高并发,只是代码之间来回切换,加上IO自动切换才有意义,有IO操作用协程
标签:pip3 BMI 导致 port lis 目的 app 上下 class
原文地址:https://www.cnblogs.com/womenzt/p/12430174.html