python中的多程序運用

2021-09-27 04:36:41 字數 2955 閱讀 8751

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...