# 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())
上一篇

概念1.进程(同步)进程是系统进行资源分配和调度的一个独立单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。
上下文进程间的切换开销,比较大,但相对比较稳定安全
2.线程(同步)线程是CPU调度和分派的基本单位。
线程间通
2020-02-24
下一篇

server
# 使用线程池来实现并发服务器
import socket
from multiprocessing.dummy import Pool
def worker(conn):
while True:
2020-02-24