有沒有辦法知道我正在運行python腳本的應用程序?如何知道哪個應用程序運行python腳本
我可以從多個來源,如Textmate,Sublime Text 2或Terminal(我在Mac OSX上)運行python。我怎麼知道,究竟哪個工具啓動了當前的python應用程序。
我試過尋找os
和inspect
模塊,但找不到解決方案。
有沒有辦法知道我正在運行python腳本的應用程序?如何知道哪個應用程序運行python腳本
我可以從多個來源,如Textmate,Sublime Text 2或Terminal(我在Mac OSX上)運行python。我怎麼知道,究竟哪個工具啓動了當前的python應用程序。
我試過尋找os
和inspect
模塊,但找不到解決方案。
您可以使用psutil來執行此操作諸如此類的事情在相當跨平臺的方式:
import psutil
my_process = psutil.Process(os.getpid())
parent = my_process.parent
print "Parent process name: " + parent.name
從psutil
文檔:
它目前支持Linux,Windows中,OSX和FreeBSD,32位和64位,與Python版本從2.4到3.3通過使用單個代碼庫。
除了名稱之外,您還可以獲得可執行文件路徑(如果您從選項列表中進行選擇,該路徑可能更有用)以及調用它的完整命令行。您還可以獲取運行該進程的用戶名。請參閱psutil classes documentation瞭解參數及其可用平臺的詳細信息。另外,如果可能的話,我會構造你的代碼,這樣你的不必必須根據調用的應用程序來修改你的行爲 - 最好讓調用應用程序傳入一個參數它修改共享代碼的行爲。但是,我很欣賞有時候其他問題優先於代碼清潔,所以psutil
應該使您能夠按照您的要求進行操作。
如果您很樂意繼續關注unix,那麼您可以通過os.getppid()
獲得進程的父PID。如果您想將其翻譯爲程序ID,則可以運行子進程以使用相關的操作系統特定的PID至有用數據工具(賠率爲 - ps
)
你試過了什麼?如果你做'os.system(「Textmate」)'那麼你顯然是在運行... – Oz123
他問的是相反的問題... python實例從哪裏啓動... – ATOzTOA
我很好奇爲什麼你需要知道這一點,因爲它應該如何啓動。 –