from multiprocessing import process
from os import getpid
from time import sleep
defrun_time
(name)
: sleep(5)
print
('child progress {}: {}'
.format
(name, getpid())
)if __name__ ==
'__main__'
:print
('parent progress id: {}'
.format
(getppid())
)# os.getpid(): 獲取當前程序id; os.getppid(): 獲取父程序id
p = process(target=run_time, args=
('hello_world',)
)# 初始化子程序:target=目前函式名, args=引數
print
('start child progress'
) p.start(
)# 啟動子程序
p.join(
)# 程序同步:等待子程序執行完畢,程式再向下執行
print
('end child progress'
)
方法from multiprocessing import pool
from os import getpid
from time import sleep
deflong_time_task
(name)
: sleep(5)
print
('child process : \n'
.format
(name, getpid())
)if __name__ ==
'__main__'
:print
('parent process: \n'
.format
(getpid())
) p = pool(2)
## 初始化程序池:一次可並行執行2個程序(等這兩個執行結束,再次啟動執行接下來的兩個,和電腦是幾核的無關)
for i in
range(10
):(i,)
)## 程序池新增程序
print
('start child progress\n'
) p.close(
)## 關閉程序池(不能再新增新程序了),準備執行程序
p.join(
)# 程序同步
print
('end child progress\n'
)
import subprocess
print
('nslookup www.python.org'
)r = subprocess.call(
['nslookup'
,'www.python.org'])
print
('exit code: {}'
.format
(r))
from multiprocessing import process, queue
from time import sleep
from random import random
defwrite
(q):
for i in
range(5
):print
('puts {}'
.format
(i))
q.put(i)
sleep(1)
defread
(q):
sleep(10)
while
true
: i = q.get(
true
)print
('get {}'
.format
(i))
if __name__ ==
'__main__'
: q = queue(
) pw = process(target=write, args=
(q,)
) pr = process(target=read, args=
(q,)
)print
('start'
) pw.start(
) pr.start(
) pw.join(
)while
true
:if q.empty():
# 如果佇列中的資料都處理完了,則強制停止read方法
pr.terminate(
)break
print
('end'
)
from multiprocessing import process, semaphore
from time import sleep
defwrite
(f):
f.acquire(
) sleep(5)
f.release(
)if __name__ ==
'__main__'
: pp =
f = semaphore(1)
for i in
range(5
):p = process(target=write, args=
(f,)
) p.start(
)for p in pp:
p.join(
)
Python中的多程序
編寫完的 沒有執行時稱為程式,正在執行的 稱為程序。程式是死的 靜態的 程序是活的 動態的 作業系統輪流讓各個任務交替執行,由於cpu的執行速度實在是太快了,我們感覺就像所有任務都在同時執行一樣。多程序中,每個程序中所有資料 包括全域性變數 都各自擁有乙份,互不影響。例如 我們啟動了qq,qq就是乙...
python中的多程序
import multiprocessing import time deffunc arg pname multiprocessing.current process name pid multiprocessing.current process pid print 當前程序id d,name ...
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...