python使用subprocess.popen,在列表path为工作路径中,依次执行d盘test文件夹中的x.exe执行程序,如果某次执行异常停止,直接开始执行下一次,并监控每一次运行的性能峰值及总耗时,将监控到的信息输出到d盘result文件夹中并依次命名为1-10.txt
时间: 2023-05-22 20:05:27 浏览: 181
下面是可能的代码实现(请注意:为了简化示例代码,下面的代码并没有对路径进行严格的检查和处理,实际的应用中需要特别注意这一点):
```
import subprocess
import time
# 工作路径
path = ['d:/test']
# 程序名称
progname = 'x.exe'
# 执行次数
numtrials = 10
# 每次执行的时间限制(单位秒)
timelimit = 10
# 记录每次执行的性能峰值和总耗时
performance = []
for i in range(numtrials):
# 构造执行命令
cmd = [progname]
# 注意:这里假设程序不需要任何参数
p = subprocess.Popen(cmd, cwd=path[0])
# 等待执行结束或超时
start = time.time()
try:
while p.poll() is None:
time.sleep(0.1)
if time.time() - start > timelimit:
p.kill()
performance.append((0, timelimit))
raise Exception('timeout')
performance.append((0, time.time() - start))
except Exception:
pass
# 保存监控信息
for i, (peak, total) in enumerate(performance):
with open('d:/result/{}.txt'.format(i+1), 'w') as f:
f.write('peak: {}\n'.format(peak))
f.write('total: {}\n'.format(total))
```
这是一个非常基础的实现,仅供参考。如果要实现更复杂的功能,比如说监控 CPU 或内存使用量,可以使用 psutil 库;如果要跨平台运行,可以使用 Python 的 subprocess 库的更高级 API。
阅读全文