#coding:utf-8
import
osimport
time
from multiprocessing import
pool
deffunc(n):
print("
%s:%s
" %(os.getpid(), n))
return n**2
deffunc2(n):
print("
%s:%s
" %(os.getpid(), n))
time.sleep(1)
return n**2
if__name__ == '
__main__':
start_time =time.time()
pool = pool(5) #
程序池中從無到有建立5個程序,以後一直是這5個程序在執行任務
res_lst =
for i in range(10):
同步呼叫,直到本次任務執行完畢拿到res,等待任務func執行的過程中可能有阻塞也可能沒有阻塞
#但不管該任務是否存在阻塞,同步呼叫都會在原地等著
(res_lst)
print("
", time.time() -start_time)
s_time =time.time()
pool2 = pool(5) #
程序池中從無到有建立5個程序,以後一直是這5個程序在執行任務
res_lst2 =
for i in range(10):
同步呼叫,直到本次任務執行完畢拿到res,等待任務func2執行的過程中可能有阻塞也可能沒有阻塞
#但不管該任務是否存在阻塞,同步呼叫都會在原地等著
(res_lst2)
print("
", time.time() -s_time)
#9156:0
#9156:1
#9156:2
#9156:3
#9156:4
#9156:5
#9156:6
#9156:7
#9156:8
#9156:9
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]##
5816:0
#3324:1
#3312:2
#8228:3
#9976:4
#5816:5
#3324:6
#3312:7
#8228:8
#9976:9
#[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
#
python3 程序池Pool 詳解
當需要建立的子程序數量不多時,可以直接利用multiprocessing中的process成生多個程序,但如果是上百甚至上千個目標,手動的去建立程序的工作量巨大,此時就可以用到multiprocessing模組提供的pool方法。初始化pool時,可以指定乙個最大程序數,當有新的請求提交到pool中...
python3 程序池版的socket併發聊天
pool內的程序數預設是cpu核數,假設為4 檢視方法os.cpu count 開啟6個客戶端,會發現2個客戶端處於等待狀態 在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序 tcp server.py coding utf 8 import osfrom socket im...
C 委託的同步呼叫和非同步呼叫
委託的invoke方法用來進行同步呼叫。同步呼叫也可以叫阻塞呼叫,它將阻塞當前執行緒,然後執行呼叫,呼叫完畢後再繼續向下進行。同步呼叫的例子 using system using system.threading public delegate int addhandler int a,int b ...