上一篇文章為:→2.1.6multiprocessing
進程的創(chuàng)建-Process子類
創(chuàng)建新的進程還能夠使用類的方式箱叁,可以自定義一個類,繼承Process類惕医,每次實例化這個類的時候耕漱,就等同于實例化一個進程對象,請看下面的實例:
from multiprocessing import Process
import time
import os
#繼承Process類
class Process_Class(Process):
#因為Process類本身也有__init__方法抬伺,這個子類相當于重寫了這個方法螟够,
#但這樣就會帶來一個問題,我們并沒有完全的初始化一個Process類峡钓,所以就不能使用從這個類繼承的一些方法和屬性妓笙,
#最好的方法就是將繼承類本身傳遞給Process.__init__方法,完成這些初始化操作
def __init__(self,interval):
Process.__init__(self)
self.interval = interval
#重寫了Process類的run()方法
def run(self):
print("子進程(%s) 開始執(zhí)行能岩,父進程為(%s)"%(os.getpid(),os.getppid()))
t_start = time.time()
time.sleep(self.interval)
t_stop = time.time()
print("(%s)執(zhí)行結(jié)束寞宫,耗時%0.2f秒"%(os.getpid(),t_stop-t_start))
if __name__=="__main__":
t_start = time.time()
print("當前程序進程(%s)"%os.getpid())
p1 = Process_Class(2)
#對一個不包含target屬性的Process類執(zhí)行start()方法,就會運行這個類中的run()方法拉鹃,所以這里會執(zhí)行p1.run()
p1.start()
p1.join()
t_stop = time.time()
print("(%s)執(zhí)行結(jié)束辈赋,耗時%0.2f"%(os.getpid(),t_stop-t_start))