如何知道哪个应用程序运行python脚本

时间:2013-01-09 13:20:27

标签: python

有没有办法知道我正在运行python脚本的应用程序?

我可以从多个来源运行python,如Textmate,Sublime Text 2或Terminal(我在Mac OSX上)。我怎么知道,究竟是哪个工具启动了当前的python应用程序。

我已尝试查看osinspect模块,但找不到解决方案。

2 个答案:

答案 0 :(得分:1)

您可以使用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应该可以让您按照自己的要求执行操作。

答案 1 :(得分:0)

如果您愿意继续使用unix,那么您可以使用os.getppid()获取流程的父PID。如果您想将其转换回程序ID,您可以运行子流程以使用相关的操作系统特定的PID到有用数据工具(赔率 - ps