程序執行緒的區別在程序,執行緒,協程的區別
linux或者unix有fork()函式,但是不支援win系統。
multiprocessing模組是跨平台版本的多程序模組。支援win系統,用法如下:
from multiprocessing importprocess
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 importpool
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...