python使用subprocess.popen,在列表path为工作路径中,依次执行d盘test文件夹中的x.exe执行程序并实时输出后台信息,如果某次执行异常停止,直接开始执行下一次,并监控每一次运行的性能峰值及总耗时,将监控到的信息输出到d盘result文件夹中并依次命名为1-10.txt
时间: 2023-05-22 16:05:44 浏览: 79
您好,以下是我的回答:
首先需要导入subprocess库,然后在代码中将路径设置为d盘test文件夹的路径,同时创建result文件夹。
接下来,可以通过一个for循环来依次执行x.exe程序,并实时输出后台信息。如果某一次执行异常停止,我们可以利用try...except语句来捕获异常并直接开始执行下一次。
在每次执行完成后,我们可以利用time库来记录每次运行的性能峰值及总耗时,并将监控到的信息输出到d盘result文件夹中并依次命名为1-10.txt。
以下是可能的Python代码示例:
```python
import subprocess
import time
import os
# 将路径设置为d盘test文件夹的路径
path = 'D:\\test'
os.chdir(path)
# 创建result文件夹
if not os.path.exists('D:\\result'):
os.mkdir('D:\\result')
# 依次执行x.exe程序
for i in range(1, 11):
try:
# 开始执行x.exe程序
start_time = time.time()
process = subprocess.Popen(['x.exe'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while True:
# 实时输出后台信息
output = process.stdout.readline()
if output == b'' and process.poll() is not None:
break
if output:
print(output.strip())
success = True
except Exception as e:
print('第 %d 次执行异常: %s' % (i, e))
success = False
# 获取耗时及性能峰值
end_time = time.time()
duration = end_time - start_time
peak_memory = resource.getrusage(resource.RUSAGE_CHILDREN).ru_maxrss
# 将监控到的信息输出到d盘result文件夹中
if success:
with open('D:\\result\\%d.txt' % i, 'w') as f:
f.write('第 %d 次执行成功,耗时:%f秒,性能峰值:%fMB' % (i, duration, peak_memory))
else:
with open('D:\\result\\%d.txt' % i, 'w') as f:
f.write('第 %d 次执行失败' % i)
```
希望这个回答能满足您的需求。如果您还有其他问题,欢迎继续提出。
阅读全文