网络编程——线程池
2021-07-13 07:07
标签:current tar result adp cep 方法 进程池 fun 异步 在一个池子里,放固定数量的线程,这些线程等待任务,一旦有任务来,就有线程自发的去执行任务。 concurrent.futures 这个模块是异步调用的机制 concurrent.futures 提交任务都是用submit for + submit 多个任务的提交 shutdown 是等效于Pool中的close + join ,是不允许再继续向池中增加任务,然后让父进程(线程)等待池中所有进程执行完所有任务。 如何把多个任务扔进池中? 要么使用 for+ submit 的方式去提交多个任务 要么直接使用map(func,iterable)方式去提交多个任务 不同的方式提交多个任务(for + submit 或者map), 拥有不同的拿结果的方式 如果是for + submit 的方式提交任务,拿结果用result方法 如果是用map的方式提交任务,结果是一个生成器,采用__next__()的方式去拿结果 关于回调函数,不管是Pool进程池的方式,还是ProcessPoolExecutor的方式开启进程池, 回调函数都是由父进程调用 关于回调函数,ThreadPoolExecutor 回调函数是由父进程调用 网络编程——线程池 标签:current tar result adp cep 方法 进程池 fun 异步 原文地址:https://www.cnblogs.com/Loren2o/p/9542813.htmlfrom concurrent.futures import ThreadPoolExecutor
import time
def func(num):
sum = 0
for i in range(num):
sum += i **2
print(sum)
t = ThreadPoolExecutor(20)
start = time.time()
t.map(func, range(1000))
t.shutdown()
print(time.time() - start)
from concurrent.futures import ThreadPoolExecutor
def func(num):
sum = 0
for i in range(num):
sum += i **2
return sum
t = ThreadPoolExecutor(20)
res = t.map(func, range(100))
t.shutdown()
while 1:
try:
print(res.__next__())
except:
StopIteration