python多进程和多线程效率比较,ProcessPoolExecutor,ThreadPoolExecutor

一下代码使用官方进程池和线程池测试,运行10万次函数时间。

 

import time
from concurrent.futures import ProcessPoolExecutor,ThreadPoolExecutor
import nb_log

def f(x):
    pass
    if x%1000 == 0:
        print(x)


if __name__ == '__main__':
    pool = ProcessPoolExecutor(10)
    pool = ThreadPoolExecutor(10)
    t1 = time.time()
    for i in range(100000):
        pool.submit(f, i)
    pool.shutdown()
    print(time.time() - t1)
    

 

进程池消耗240秒,线程池消耗4秒。

 

多进程光是主进程submit任务都要消耗大量cpu。每秒执行任意函数不可能突破1000次。

进程池不适合快速频繁sumit,适合直接启动多个进程,每个进程从redis拉取任务,这样的10进程性能暴击ProcessPoolExecutor。

上一篇:高并发面试:线程池的七大参数?手写一个线程池?


下一篇:字节跳动二面!面试官直接问我生产环境下如何监控线程池?还好我看了这篇文章!