python 開啟程序的兩種方法、以及查詢子程序與父程序
阿新 • • 發佈:2019-01-04
方法1
先輸出主程序,再輸出子程序是因為 p.start() 只是給系統傳送就緒訊號有延時,所以主程序都執行完了,可能子程序才到他開始執行
from multiprocessing import Process # 建立程序的模組
def task(name):
print(name)
if __name__ == '__main__':
# 開啟子程序 引數1:方法名(不要帶括號) 引數2:引數(元祖) 返回物件
p = Process(target=task, args=('子程序1',))
p.start() # 只是給作業系統傳送了一個就緒訊號,並不是執行。作業系統接收訊號後安排cpu執行
print('主程序')
# 輸出:主程序--> 子程序
方法2 - 類的方法
from multiprocessing import Process # 建立程序的模組
class MyProcess(Process):
def __init__(self, name):
super().__init__()
self.name = name
def run(self): # 固定名字run !!!必須用固定名
print(self.name)
if __name__ == '__main__' : # 必須要這樣啟動
p = MyProcess('子程序1')
p.start()
print('主程序')
檢視程序ID 與 父程序ID
import os
from multiprocessing import Process
def taks():
# os.getpid = 取程序id
# os.getppid = 取父程序id
print('這裡是程序: %sd 父程序ID:%s' % (os.getpid(), os.getppid()))
if __name__ == '__main__':
p = Process(target=taks)
p.start()
print('主程序' ,os.getpid())
.jion 等待子程序執行完畢
import os
from multiprocessing import Process
class MyProcess(Process):
def __init__(self, name):
super().__init__()
self.name = name
def run(self): # 固定名字run !!!
print(self.name)
if __name__ == '__main__':
p = MyProcess('子程序1')
p.start()
p.join() # 【主程序等 子程序執行完畢再執行後面程式】
print('主')
terminate 像作業系統傳送幹掉程序命令is_alive,不會立即關閉,所以is_alive立刻檢視的結果可能還是存活
is_alive 判斷程序是否存活