程序池 阻塞式

2022-06-07 13:03:10 字數 908 閱讀 1076

阻塞式特點:

新增乙個任務,就執行乙個任務,如果乙個任務不結束,下乙個任務就不會被新增進來

import os

from 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...