约 317 字 预计阅读 1 分钟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# from multiprocessing import Pool # 进程池
from multiprocessing.dummy import Pool #线程池
from multiprocessing.pool import ThreadPool # 线程池
import threading
import time
def func(i):
print("{}-------555".format(i))
time.sleep(2)
return i
def print_back(*args, **kwargs):
print("处理数据完成",args, kwargs)
pool = Pool(6) # 不写的话 默认是cpu的个数
# print(threading.active_count())
for i in range(5):
pool.apply_async(func=func, args=(i,), callback=print_back) ## 添加任务 不阻塞 主要使用的方法
# pool.apply(func=func, ) ## 添加任务 阻塞
# pool.map(func, [i for i in range(5)]) #添加任务 不阻塞
pool.close() #关闭线程池 不在提交新的任务
pool.join() #等待进程池中的任务执行完毕
print("任务结束")
########### 线程池的步骤
p = ThreadPool(3) # 实例化
p.apply_async(func) # 函数 # 可以将返回值.get() 但是get也会i阻塞
p.close()
p.join()
# 进程池比线程池耗费资源
# 可以将返回值.get() 但是get也会i阻塞
async_result = p.apply_async(func) # 函数
print(async_result.get())
|