核心思想
以时间换空间
进程池
进程池:一个容器,这个容器限制住你开启进程的数量,默认是os.cpu_count(),我的电脑是8核,所以能开启8个,第一次肯定只能并行的处理8个任务,只要有任务完成,进程马上就会接下一个任务。
代码实现:
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
import os,time,random
# print(os.cpu_count())
def task(n):
print(f"{os.getpid()} 接客")
time.sleep(random.randint(1,3))
if __name__ == '__main__':
p = ProcessPoolExecutor()
for i in range(30):
p.submit(task,1)
线程池
线程池:线程最多能执行的是进程的5倍,也就是40个
代码实现:
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
import os,time,random
# print(os.cpu_count())
def task(n):
print(f"{os.getpid()} 接客")
time.sleep(random.randint(1,3))
if __name__ == '__main__':
# p = ProcessPoolExecutor()
# for i in range(30):
# p.submit(task,1)
t = ThreadPoolExecutor()
for i in range(200):
t.submit(task,i)