Python 繼承Process類建立程序

2021-10-02 18:51:36 字數 2104 閱讀 9933

對於一些簡單的小任務,通常使用process(target=test)。但是如果要處理複雜任務的程序,通常定義乙個類,使其繼承process類,每次例項化這個類的時候,就等同於例項化乙個程序物件。

使用process子類建立2個子程序,分別輸出父、子程序的pid,以及每個子程序的狀態和執行時間,**如下:

# -*-coding:utf-8 -*-

# 繼承process類

# print("------------繼承process類--------------")

class

subprocess

(process)

:# 由於process類本身也有__init__初始犯法,這個子類相當是重寫了父類這個方法

def__init__

(self, interval, name="")

: process.__init__(self)

# 呼叫父類初始化方法

self.interval = interval

if name:

self.name = name

# 重寫了process類的run()方法

defrun

(self)

:print

("子程序(%s) 開始執行,父程序為(%s)"

%(os.getpid(

), os.getppid())

) t_start = time.time(

) time.sleep(self.interval)

t_stop = time.time(

)print

("子程序(%s)執行結束,耗時%0.2f秒"

%(os.getpid(

), t_stop - t_start)

)if __name__ ==

"__main__"

:print

("---------父程序開始執行--------"

)print

("父程序pid:%s"

% os.getpid())

p1 = subprocess(interval=

1, name=

'mrsoft'

) p2 = subprocess(interval=2)

# 對乙個不幫韓target屬性的process類執行start方法,就會執行這個類中的run方法

# 故這裡會執行p1.run()

p1.start(

) p2.start(

)# 輸出p1和p2的程序的執行狀態,如果真正進行,返回true

print

("p1.is_alive=%s"

% p1.is_alive())

print

("p2.is_alive=%s"

% p2.is_alive())

# 輸出p1和p2程序的別名和pid

print

("p1.name=%s"

% p1.name)

print

("p1.pid=%s"

% p1.pid)

print

("p2.name=%s"

% p2.name)

print

("p2.pid=%s"

% p2.pid)

print

("----------等待子程序----------"

) p1.join(

) p2.join(

)print

("-----------父程序結束----------"

)

上述**中,定義了乙個subprocess類,繼承了multiprocessing.process類。subprocess子類中定義了兩個方法:init()初始方法和run()方法。在__init__()初始方法中,呼叫multiprocess.process類的__init__()初始化方法,否則父類初始化方法會被覆蓋,無法開啟程序。此外,subprocess子類中沒有定義start()方法,但是在主程序中呼叫了start()方法,此時就會自動執行subprocess中的run()方法

Python 程序 繼承Process類實現程序

from multiprocessing import process import time import os 繼承process類 class processclass process process類本身也有 init 方法,如果沒有初始化,就不能使用從這個類繼承的一些方法和屬性,最好的方法...

繼承Process類,run函式的簡單使用

定義乙個類 繼承process類 from multiprocessing import process import osimport time class download process def init self,interval process.init self self.interva...

python 多程序Process模組使用

引數介紹 1 group引數未使用,值始終為none 2 target表示呼叫物件,即子程序要執行的任務 3 args表示呼叫物件的位置引數元組,args 1,2,egon 4 kwargs表示呼叫物件的字典,kwargs 5 name為子程序的名稱 p.start 啟動程序,並呼叫該子程序中的p....