我正在使用Python的PSUtil库检测给定流程完成的确切时间。目前我通过查找流程何时终止来执行此操作,以下一套测试适用于 Windows 和常规Linux 程序:
# Run a command and keep a reference
if do_run_command:
process = psutil.Popen(command)
# Latch onto running process by PID
else:
process = psutil.Process(int(pid))
# Loop until the process ends
while True:
if not process.is_running():
break
if process.status() == psutil.STATUS_ZOMBIE:
break
try:
# Command that gets information about the process
except psutil.NoSuchProcess:
break
# Store end time
但是,当我尝试在 Wine 下运行的程序中使用它时,这些测试都不会触发。这是因为看起来Wine进程从未实际终止,而是无限期地进入睡眠状态。这包括在Wine中运行的程序,在Wine中启动程序的脚本等等。
这导致了能够检测程序何时真正结束的问题,以及因为进程在内存中积累,直到我最终必须手动终止它们。
- = - = - = - = -
我在 CentOS 6.0 上运行。我可以归结为这些主要问题: