码迷,mamicode.com
首页 > 编程语言 > 详细

并发编程--线程池与进程池

时间:2019-08-24 00:26:20      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:lex   roc   进程池   开启   线程   ESS   核心   BMI   current   

核心思想

以时间换空间

进程池

进程池:一个容器,这个容器限制住你开启进程的数量,默认是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)

并发编程--线程池与进程池

标签:lex   roc   进程池   开启   线程   ESS   核心   BMI   current   

原文地址:https://www.cnblogs.com/alex3174/p/11403107.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!