python 多程序 提高執行效率

2021-10-07 18:46:07 字數 2252 閱讀 2872

python 是一種非常流行的程式語言,但是python 的效率卻並不是非常的理想,這時候就非常有必要使用多程序來提高python 的執行效率。

匯入多程序的模組

from multiprocessing import process      # 多程序模組

from multiprocessing import current_process # 獲取當前程序號

import time

建立多個程序

方式一:

# 定義乙個多程序執行的函式

deffun

(n):

time.sleep(3)

# 設定乙個延時觀察多程序的運**況

print

("{}"

.format

(n))

print

("當前程序號:"

,current_process(

).pid)

# 列印當前的程序號

if __name__ =

"__main__"

: p = process(target=fun,args=(3

,))# 輸入的引數設定,如果只是乙個引數時候必須加上逗號,不然會被解析為乙個字串或者數字

p.start(

)# 建立乙個程序的記憶體空間

p.join(

)# 阻塞程序,等待子程序執行完成之後,再繼續執行朱金城**

print

("主程序執行結束,程序號{}"

.format

(current_process(

).pid)

)# 檢視主程序號

方式二:

建立多個程序

class

myprocess

(process)

:# 繼承多程序的模組

defrun

(self)

:# 替換多程序類中的run 函式

print

("start myprocess"

) time.sleep(2)

print

("end myprocess"

)if __name__ =

"__main__"

: p = myprocess(

)# 建立乙個子程序

p.start(

) p.join(

)# 阻塞子程序等待子程序執行結束

print

("主程序執行結束"

)

ps: 檢視當前程序號的另一種方法

import os

os.getpid();

# 當前程序的程序號

os.getppid();

# 當前程序的父程序的程序號

程序之間資料一般不能相互互動,需要相互互動時候,需要使用到第三方介質或者匯入其他第三方庫進行獲取。

總結:1.多個程序在記憶體中分別擁有著不同的區域,程序之間互不影響,同時也導致是資料不能共享。

2.多個程序分配到記憶體之後,幾乎同時執行,不需要等待前面的結束才進行後面的程序,非同步執行**。

3、多程序由於同時執行,導致在讀取資料以及修改資料時候會出現問題,新增互斥鎖,使得乙個時間點內只能有乙個程序在修改資料,不會導致資料出現邏輯上的錯誤(將併發資料轉變成為序列,犧牲效率,但是保證資料的安全)

from multiprocessing import process, lock   

import json

defchange

(i):

with

open

("data.json"

,"w"

)as f:

json.dump(f,

)# 修改邏輯資料

defrun

(i,mutex)

: mutex.acquire(

)# 搶鎖

change(i)

mutex.release(

)# 釋放鎖

mutex = lock(

)# 新建一把互斥鎖

for i in

range(1

,10):

p = process(target=run,args=

(i,mutex)

) p.start(

)

多執行緒與多程序 執行效率

1 多執行緒在單核和多核cpu上的執行效率問題的討論 多執行緒在單cpu中其實也是順序執行的,不過系統可以幫你切換哪個執行而已,其實並沒有快 反而慢 多個 cpu的話就可以在多個 cpu中同時執行了。單核 cpu時使用多執行緒,通常是有執行緒要處於等待狀態。而對於普通的進度條更新類的,能夠簡單控制的...

python多程序 python多程序

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

提高python執行效率的方法

python上手很容易,但是在使用過程中,怎麼才能使效率變高呢?下面說一下提高python執行效率的方法,這裡只是說一點,python在引入模組過程中提高效率的方法。例如 1.我們要使用os模組中的某個屬性,那我們可以單獨引入os中某個屬性 from os import version 同樣的我們也...