1. 程式人生 > >程序池與執行緒池

程序池與執行緒池

為什麼要用‘池’:

    池是用來限制併發的任務的數目,限制我們的計算機在一個自己可承受的範圍內去併發地執行任務。

池子內什麼時候裝程序:併發的任務屬於計算密集型。

池子內什麼時候裝執行緒:併發的任務屬於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)

執行結果: