python基礎 多程序

2022-02-07 15:16:08 字數 2083 閱讀 1471

程序執行緒的區別在程序,執行緒,協程的區別

linux或者unix有fork()函式,但是不支援win系統。

multiprocessing模組是跨平台版本的多程序模組。支援win系統,用法如下:

from multiprocessing import

process

importos#

子程序要執行的**

defrun_proc(name):

print('

run child process %s (%s)...

' %(name, os.getpid()))

if__name__=='

__main__':

print('

parent process %s.

' %os.getpid())

p = process(target=run_proc, args=('

test

',))

print('

child process will start.')

p.start()

p.join()

print('

child process end.

')>>>

parent process 9860.

child process will start.

run child process test (9764)...

child process end.

*該py檔案是通過cmd視窗執行,不然執行不了多程序

建立子程序時,只需要傳入乙個執行函式和函式的引數,建立乙個process例項,用start()方法啟動,這樣建立程序比fork()還要簡單。

join()方法可以等待子程序結束後再繼續往下執行,通常用於程序間的同步。

如果要啟動大量的子程序,可以用程序池的方式批量建立子程序:

from multiprocessing import

pool

import

os, time, random

deflong_time_task(name):

print("

run task %s (%s)....

" %(name, os.getpid()))

start =time.time()

time.sleep(random.random()*3)

end =time.time()

print("

task %s runs %0.2f seconds.

" %(name, (end -start)))

if__name__ == "

__main__":

print("

parent process %s.

" %os.getpid())

p = pool(4) #

允許執行多少個程序

for i in range(5):

print("

waiting for all subprocesses done....")

p.close()

p.join()

print("

all subprocesses done.

")>>>

parent process 10852.

waiting for all subprocesses done....

run task 0 (9620)....

run task 1 (10180)....

run task 2 (8116)....

task 2 runs 0.03 seconds.

run task 3 (8116)....

run task 4 (8744)....

task 4 runs 0.42 seconds.

task 0 runs 0.64 seconds.

task 1 runs 1.15 seconds.

task 3 runs 2.90 seconds.

all  subprocesses done.

python基礎 多程序

程序執行緒的區別在程序,執行緒,協程的區別 linux或者unix有fork 函式,但是不支援win系統。multiprocessing模組是跨平台版本的多程序模組。支援win系統,用法如下 from multiprocessing import process importos 子程序要執行的 d...

python多程序 python多程序

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

python多程序 Python多程序實踐

建立程序方式如下 可以通過lock鎖機制實現共享鎖,但比較常用的方式還是以上這些方式,效率更高,更安全。使用方式 構造 類方法 使用方式 構造 更多型別支援一般使用manager,支援的型別包括list,dict,namespace,lock,rlock,semaphore,boundedsemap...