阻塞式特點:
新增乙個任務,就執行乙個任務,如果乙個任務不結束,下乙個任務就不會被新增進來
import osfrom multiprocessing import process, pool
from random import random
import time
def task(task_name):
print('開始做任務', task_name)
start = time.time()
# 使用sleep
time.sleep(random()*2)
end = time.time()
print('完成任務:{}!用時:{},程序id:{}'.format(task_name, (end-start), os.getpid()))
if __name__ == '__main__':
pool = pool(5)
tasks = ['聽**', '吃飯', '洗衣服', '打遊戲', '散步', '看孩子', '做飯']
for task1 in tasks:
pool.close()
pool.join() # 呼叫join之前,先呼叫close函式,否則會出錯。執行完close後不會有新的程序加入到pool,join函式等待所有子程序結束
總結:
程序池:
pool = pool(processes=n) 建立程序池物件
pool.close()
pool.join() 讓主程序讓步
阻塞式 非阻塞式IO
知識點 非阻塞式io 的兩種設定方法 1 函式fcntl 設定 o nonblock 選項 int flag fcntl sockfd,f getfl,0 檢查檔案標誌位 fcntl sockfd,f setfl,flag o nonblock 設定檔案標誌位 2 函式ioctl 設定fionbio...
自定義執行緒池阻塞式提交任務
public class contentindexbuilder 這種拒絕執行策略在任務佇列滿後會使任務在呼叫執行緒中執行 這種方式可以避免任務無限制的迅速提交,同時避免任務的放棄 private final static int n threads 5 private final static i...
阻塞式Socket VS 非阻塞式Socket
主要有三種型別的socket,永久阻塞模式 阻塞加超時模式和非阻塞式。socket模式可以通過apr socket opt set 和apr socket timeout set 這兩個api控制。在windows和unix系統上預設的socket是永久阻塞模式 apr so nonblock ti...