13 多程序multiprocessing 程序池

2022-01-31 17:07:03 字數 3136 閱讀 9142

multiprocessing:

程序池:

python中的多程序需要使用multiprocessing模組

1.程序的建立:程序物件=multiprocessing.process(target=函式名,args=(引數,))【補充,由於args是乙個元組,單個引數時要加「,」】

2.程序的執行:  程序物件.start()

程序的join跟執行緒的join一樣,意義是 「阻塞當前程序,直到呼叫join方法的那個程序執行完,再繼續執行當前程序」

注:在windows中**中必須使用這個

,在linux 中不需要加這個

import

multiprocessing,time,os

defthread_run():

print

(threading.current_thread())

defrun(name):

time.sleep(1)

print("

hello

",name,"

run in

",os.getpid(),"

ppid:

",os.getppid())

if__name__=='

__main__

':#必須加

obj=

for i in range(10):

p=multiprocessing.process(target=run,args=('

bob'

,)) p.start()

start_time=time.time()

for i in

obj:

i.join()

print("

run in main")

print("

spend time :

",time.time()-start_time)

繼承multiprocessing的process類的類要主要做兩件事:

1.如果初始化自己的變數,則先要呼叫父類的__init__()【如果不呼叫,則要自己填寫相關的引數,麻煩!】然後做自己的初始化;如果不需要初始化自己的變數,那麼不需要重寫__init__,直接使用父類的__init__即可【已經繼承了】

2.重寫run函式

程序池的建立與使用:

from multiprocessing import

pool

import

time,os

deffunc1(i):

time.sleep(1)

print("

run in process:

",os.getpid())

if__name__=="

__main__":

pool=pool(5)

start_time =time.time()

for i in range(10):

序列,這裡是加乙個執行完再加乙個

pool.close()#

先close再等待

pool.join()

print("

main run done,spend_time:

",time.time()-start_time)

from multiprocessing import

pool

import

time,os

deffunc1(i):

time.sleep(1)

print("

run in process:

",os.getpid())

if__name__=="

__main__":

pool=pool(5)

start_time =time.time()

for i in range(10):

並行pool.close()

#先close再等待

pool.join()

print("

main run done,spend_time:

",time.time()-start_time)#

2.6,證明是並行

from multiprocessing import

pool

import

time,os

deffunc1(i):

time.sleep(1)

print("

run in process:

",os.getpid())

return

"filename

"def log(arg):#

#引數為程序建立中func的函式的返回值

print("

log done :

",arg)

if__name__=="

__main__":

pool=pool(5)

start_time =time.time()

for i in range(10):

log的引數是func1的返回值

pool.close()

#先close再等待

python多程序之multiprocessing

簡單的理解 單板上執行的乙個程式就是乙個程序。程序是作業系統分配資源的最小單位,不同的程序之間資源不共享,程序間通訊需要使用特定的方式。python提供了自帶的multiprocessing庫,用於多執行緒場景。import multiprocessing import time defworker...

多程序 多程序queue

多程序 import multiprocessing import threading import time defthread run print threading.get ident defrun name time.sleep 2 print hello name t threading....

python多程序 python多程序

當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...