python3 程序池的同步呼叫

2022-09-07 02:24:15 字數 1404 閱讀 5898

#

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執行的過程中可能有阻塞也可能沒有阻塞

#但不管該任務是否存在阻塞,同步呼叫都會在原地等著

print

(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執行的過程中可能有阻塞也可能沒有阻塞

#但不管該任務是否存在阻塞,同步呼叫都會在原地等著

print

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