我删掉了一些代码来概述我要做的事情。我只是语法不太正确,有人能帮我吗?你知道吗
def calc_execution():
import subprocess
#get the proc id of detectmotion; need help converting into subprocess
detectmotion_file_pid = subprocess.call(pgrep -f "detectmotion.py")
if detectmotion_file_pid:
#determine how long pid has been running; note this seems to be incorrect
len_run_time=subprocess.call(ps -o etime= -p detectmotion_file_pid)
print len_run_time
我的问题是如何让vardetectmotion_file_pid
和len_run_time
的语法正常工作。你知道吗
有人能帮忙吗?你知道吗
谢谢
subprocess.call()
需要一个字符串或字符串数组作为args
参数-请参阅文档here。你知道吗您提供:
subprocess.call(pgrep -f "detectmotion.py")
,python将其解释为:pgrep
的值,然后减去f
你真正的意思是:
该数组中的每个项都用作下一个进程的参数。
pgrep
标识要运行的二进制文件(并在新进程中显示为arg0)。-f
和detectmotion.py
是下一个参数。你知道吗对于下一个(获取运行时),您将再次执行相同的操作 -下面是一个简单的修复。你知道吗
最后一个问题是,您希望返回值
subprocess.call()
就是您要查找的数据。事实上,subprocess.call()
将:如果您想捕获刚刚运行的命令的输出,那么您需要使用“管道”,将命令的输出带入您的应用程序,这就是事情变得混乱的地方,文档说:
所以。。。你知道吗
您需要对
ps -o etime= -p ...
的输出执行类似的操作,因为这将以可读的格式返回时间。你知道吗此时,您可能会问自己如何将看似
mm:ss
的格式转换为更有用的格式。。。不幸的是,ps
的输出是为人类设计的,并且像这样解析可能不是非常简单。你知道吗您可能更喜欢查看^{} ,它可以告诉您有关进程的各种信息:
相关问题 更多 >
编程相关推荐