以時間換空間
程序池:乙個容器,這個容器限制住你開啟程序的數量,預設是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" 接客")
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" 接客")
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)
併發程式設計之執行緒池,程序池
池 受限於硬體的發展,硬體跟不上軟體的發展 在保證計算機硬體安全的情況下,最大限度的利用了計算機 池其實是降低了程式的執行效率,但是保證了計算機硬體的安全 我們再使用程序和執行緒時,不可能無限制的去開程序或執行緒。因此我們需要用到程序池,執行緒池來解決這一問題。1.concurrent模組是用來建立...
併發程式設計 程序池與執行緒池 練習3
通過繼承multipocessing類,實現乙個程序池。coding utf 8 實現乙個程序池 import time import multiprocessing from multiprocessing import manager,queue class myprocess object d...
併發程式設計 程序池與執行緒池 練習2
通過繼承threading類,實現乙個執行緒池 coding utf 8 自己實現乙個執行緒池 import time import queue import threading class mythreadpool object def init self,num super init self....