介绍
- 安装:
pip3 install threadpool
- 导入线程池:
from concurrent.futures import ThreadPoolExecutor
- 导入进程池:
from concurrent.futures import ProcessPoolExecutor
- 以下用线程池作为示例, 进程池用法和线程池大致相同
示例
异步回调
- 进程池容量为 3
- 异步处理 task()
- 异步回调 after()
from concurrent.futures import ThreadPoolExecutor
import time
import random
def task(num, x):
time.sleep(random.randint(1, 3))
return num, x
def after(x):
print("%s, %s" % (x.result()[0], x.result()[1]))
if __name__ == '__main__':
p = ThreadPoolExecutor(3)
for i in range(10):
p.submit(task, i, 1).add_done_callback(after)
p.shutdown()
print("end")
同步回调
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
import time, random, os
def task(num, x):
time.sleep(random.randint(1, 3))
return num, x
def after(x):
print("%s, %s" % (x[0], x[1]))
if __name__ == "__main__":
p = ProcessPoolExecutor(3)
for i in range(5):
r = p.submit(task, i).result()
after(r)
p.shutdown()
print("end")
map的用法
import time
import random
from concurrent.futures import ThreadPoolExecutor
def task(num, x):
time.sleep(random.randint(1, 3))
print(num, x)
if __name__ == '__main__':
p = ThreadPoolExecutor(3)
p.map(task, range(1, 12), range(1, 5))
p.shutdown()
print("end")