详解:
https://www.jianshu.com/p/b9b3d66aa0be
https://yq.aliyun.com/articles/694452
另外,由于线程池实现了上下文管理协议(Context Manage Protocol),因此,程序可以使用 with 语句来管理线程池,这样即可避免手动开启关闭线程池,利用线程池的好处: https://www.cnblogs.com/hoojjack/p/10846010.html
一.
from concurrent.futures import ThreadPoolExecutor
def task(arg):
print(arg)
return arg
pool = ThreadPoolExecutor(max_workers=20) #创建了一个线程池,线程池里面最多有20个线程
for i in range(100):
#pool.submit(task,i) 去线程池中申请一个线程,让线程执行task函数,i 是传给task函数的参数
pool.submit(task,i) #i是传入函数的参数,如果task函数有多个参数,直接在后面传就行了
二.
from concurrent.futures import ThreadPoolExecutor
import time
def get_html(times):
time.sleep(times)
print("get page {}s finished".format(times))
return times
print(110)
executor = ThreadPoolExecutor(max_workers=2)
task1 = executor.submit(get_html, (3))
task2 = executor.submit(get_html, (2))
print(111)