在類unix作業系統下,可以用 os.fork() 建立乙個新的程序,windows系統不可以:
import os
ret=os.fork()
print('ret=%d' %ret)if ret == 0:
print('這是子程序:%d,繼承自:%d' %(os.getpid(), os.getppid()))else:
print('這是父程序:%d' %os.getpid())>>>ret=0這是子程序:1537,繼承自:1536ret=1537這是父程序:1536
在執行了 os.fork() 這一句之後,會有兩個程序同時向下執行, 返回的 ret 分別是 0(子程序)的 和 大於0(父程序)的 ,
getpid() 是獲取當前程序的pid getppid() 是獲取父程序的 pid 所以可以看出子程序 1537繼承自1536.
注意父程序的結束並不會導致子程序的停止.
所以,一般,用 multiprocessing 模組來建立乙個新的程序,多系統通用:
frommultiprocessing import process
import time
import test2if __name__ == '__main__':
p= process(target=test2.test)
p.start()whiletrue:
print('----mian----')
time.sleep(1)>>>----mian----
----test----
----mian----
----test----
target 裡面是子程序呼叫物件的名稱. (函式放在這個檔案裡面執行有bug,所以放在了 test2.py 檔案裡面,不加if __name__ == '__main__': 這一行也會有bug)
process語法結構如下:
process([group [, target [, name [, args [, kwargs]]]]])
target:表示這個程序例項所呼叫物件;
args:表示呼叫物件的位置引數元組;
kwargs:表示呼叫物件的關鍵字引數字典;
name:為當前程序例項的別名;
group:大多數情況下用不到;
process類常用方法:
is_alive():判斷程序例項是否還在執行;
join([timeout]):是否等待程序例項執行結束,或等待多少秒;
start():啟動程序例項(建立子程序);
run():如果沒有給定target引數,對這個物件呼叫start()方法時,就將執行物件中的run()方法;
terminate():不管任務是否完成,立即終止;
process類常用屬性:
name:當前程序例項別名,預設為process-n,n為從1開始遞增的整數;
pid:當前程序例項的pid值;
還有一種方式建立程序,就是process子類建立子程序, 因為 p.start() 是呼叫 p的run() 方法,所以需要重寫run方法:
classmyprocess(process):
def run(self):whiletrue:
print('----1----')
time.sleep(1)if __name__ == '__main__':
p=myprocess()
p.start()whiletrue:
print('main')
time.sleep(1)>>>main ----1----main ----1----
當然,還有更加簡單的方法建立程序.那就是程序池:
if __name__ == '__main__':
pool= pool(3) #最多三個程序for i in range(10):
pool.close() #關閉程序池,不能再新增任務
pool.join() #等待程序池裡的任務完成
需要注意的是,程序池並不和process一樣會等待子程序的結束,而是任務完成之後馬上結束主程序,所以需要 pool.join() 等待子程序結束.
python安裝(不影響系統自帶python)
linux下安裝python3.6和第三方庫 如果本機安裝了python2,盡量不要管他,使用python3執行python指令碼就好,因為可能有程式依賴目前的python2環境,比如yum!不要動現有的python2環境!1.安裝依賴環境 yum y install zlib devel bzip...
Python系統程序管理模組
模組 psutil psutil是乙個跨平台庫,可以很輕鬆的為我們實現獲取系統執行的程序和資源利用率等資訊。功能 主要是為了系統監控 安裝 1 程序資訊 進行資訊主要包括以下幾個部分 程序名稱 路徑狀態 系統資源利用率 psutil.process 使用方法 1 2 3 4 5 6 7 8 9 10...
macOS系統下Vscode的python配置教程
1.vscode是一款開源的跨平台編輯器。預設情況下,vscode使用的語言為英文 en 以下步驟改為中文 開啟vscode工具,使用快捷鍵組合 cmd shift p 在搜尋框中輸入 configure display language 點選確定後,修改locale.json檔案下的屬性 loca...