赞
踩
有时候因为要跑很多rtl的仿真,而现有的资源比较有限,每次都需要等一批rtl仿真结束后,才可以执行下一批,尤其是碰到最末的时候,一批rtl仿真结束,要是在打开电脑去run下一批,确实挺不方便的
一度想着要是有个脚本就好了,奈何自己Python确实不行,刚好最近有大火的ChatGPT,就用ChatGPT辅助写了个脚本
每个人的仿真资源是有限的,就比如分配给我的资源是10个,那么我一次最多可以丢10个rtl仿真,空闲的资源数量可以通过shell cmd打印出来
我现在需要的情景是,一次丢多个rtl仿真,但前后只需要丢两次rtl仿真,因此,我可以在第一次丢rtl仿真后,运行脚本,等第一次丢的rtl仿真完成后,自动丢第二次rtl仿真
因此大题思路如下:(均基于丢完第一次rtl仿真)
1、执行shell cmd,并将内容写入一个文档中
2、 读取文档内容,根据正则表达式,提取当前占用资源的数值
3、比对该数值与设定阈值的大小,判断是进行下一次的rtl仿真,还是等待若干小时进行下次读取状态
大概就是这样,下面给出Python代码
#!/usr/bin/env python import subprocess import re import time status_cmd = '查看状态的shell指令' threshold = #状态值, int型 excute_cmd = '符合条件后执行的shell指令' sleep_time = #每隔多久检查一次, int型,单位:小时 find_str = r'指定查找的内容' #定义子函数 def extr_num(find_str): subprocess.call(status_cmd > 'file.txt', shell=True) #执行shell cmd,并将内容写入 file.txt文件中 with open('file.txt', 'r') as f: cont = f.read() match = re.search(find_str, cont) if match: num = int(match.group(1)) if num > threshold: return num else: subprocess.call(excute_cmd, shell=True) return None else: print('Error >_<') return None #主函数执行 result = extr_num(find_str) while result is not None: print("等待 n 小时再次获取状态 ...") print(time.strftime('%Y-%m-%d %H-%M-%S', time.localtime())) time.sleep(sleep_time * 60 * 60) result = extr_num(find_str) #执行完后,删除file.txt subprocess.call('rm -f file.txt', shell=True)
具体每个库函数啥作用,有啥需要注意的咱也不懂,毕竟对Python也没那么了解,反正能用,嘿嘿…
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。