进程池与线程池

为什么要用‘池’:

    池是用来限制并发的任务的数目,限制我们的计算机在一个自己可承受的范围内去并发地执行任务。

池子内什么时候装进程:并发的任务属于计算密集型。

池子内什么时候装线程:并发的任务属于I/O密集型。


进程池的使用

from concurrent.futures import ProcessPoolExecuto

import time,os,random


def task(x):
    print('%s 去服务' %os.getpid())
    time.sleep(random.randint(4,5))
    return x**2

if __name__ == '__main__':
    p=ProcessPoolExecutor(max_workers=5)#默认开启的进程数是cpu的核数

    for i in range(20):
        p.submit(task,i)
运行结果:


线程池的使用:

from concurrent.futures import ThreadPoolExecutor

import time,os,random


def task(x):
    print('%s 去服务' %os.getpid())
    time.sleep(random.randint(4,5))
    return x**2

if __name__ == '__main__':
    p=ThreadPoolExecutor()#默认开启的进程数是cpu的核数

    for i in range(20):
        p.submit(task,i)

运行结果:



猜你喜欢

转载自blog.csdn.net/miaoqinian/article/details/80105997