python中,程序池內部會維護乙個程序序列。當需要時,程式會去程序池中獲取乙個程序。
如果程序池序列中沒有可供使用的程序,那麼程式就會等待,直到程序池中有可用程序為止。
terminate 立刻關閉程序池
join 主程序等待所有子程序執行完畢,必須在close或terminete之後
close 等待所有程序結束才關閉執行緒池
同步是指乙個程序在執行某個請求的時候,必須要到收到對方返回的資訊才繼續執行下去
非同步是指程序在執行某個請求時,不管其他的程序的狀態,這個程序就執行後續操作;當有訊息返回時系統會通知程序進行處理,這樣可以提高執行的效率
例如:打**就是同步通訊,發資訊就是非同步通訊。**如下:
程式執行結果:from multiprocessing import pool
import time
def func(args):
time.sleep(1) #程式休眠1s
print("%s------>%s"%(args,time.ctime())) #列印引數及時間
if __name__=="__main__":
p1=pool(2) #設定開啟2個程序池
for i in range(10):
p1.close() #關閉程序池
time.sleep(2) #程式休眠2s
p1.terminate() #關閉程序池
p1.join() #阻塞程序池
print("ending") #列印結束語句
可以看到,在程式執行過程中,關閉程序池,則程式會立即停止,不會再繼續執行後續語句。0------>thu jul 20 20:18:43 2017
1------>thu jul 20 20:18:43 2017
ending
**如下:
執行結果如下:from multiprocessing import pool
import time
def func(args):
time.sleep(1) #休眠1s
print("%s------>%s"%(args,time.ctime())) #列印傳遞的引數及時間
if __name__=="__main__":
p1=pool(2) #定義2個程序池
for i in range(10): #定義迴圈10次
p1.close() #等待所有的任務都完成才關閉程序池
p1.join()
print("ending")
0------>thu jul 20 20:19:12 2017
1------>thu jul 20 20:19:12 2017
2------>thu jul 20 20:19:13 2017
3------>thu jul 20 20:19:13 2017
4------>thu jul 20 20:19:14 2017
5------>thu jul 20 20:19:14 2017
6------>thu jul 20 20:19:15 2017
7------>thu jul 20 20:19:15 2017
8------>thu jul 20 20:19:16 2017
9------>thu jul 20 20:19:16 2017
ending
python中的程序池
coding utf 8 import multiprocessing import time deffunc msg print msg msg time.sleep 3 print end if name main pool multiprocessing.pool processes 3 fo...
Python中的程序池
一喪 為了情人節和你出去,我有了好幾十萬自行車的使用權 我們先來說我們為什麼使用這個程序池。目的 可以節約大量的時間。既然這麼重要,那我們都應該使用什麼方法去呼叫方法呢?我們來看一下 pool是什麼?pool就是我們的程序池了,讓我們來看一下怎麼用這個方法 import multiprocessin...
python 中的程序池
from multiprocessing import pool import time,random def jincheng i print s開始 i time.sleep random.random 加時間是為了體現多程序的併發效果 print s結束 i if name main p po...