python 系統程序 python

2021-10-19 20:29:24 字數 2047 閱讀 2300

在類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...