记录自己最近有趣的发现
由于实验室各方面条件都不到位,只能在自己笔记本上跑程序,有时候上一个程序跑完,下一个程序就得接着跑起来,最大化利用时间吧。
但有时候程序在半夜就结束运行了,此时处于无人值守状态,现提供两种解决方案
定时运行
这个方法需要估计出上一个程序结束的大概时间,然后设置好下一个程序运行的时间
import time if __name__ == '__main__': while True: time_now = time.strftime("%H:%M:%S", time.localtime()) # 刷新 if time_now == "01:00:00": # 此处设置定时的时间
检测显存运行
首先需要安装pynvml: pip install nvidia-ml-py
检测GPU显存,当剩余的显存大于某个数值的时候,程序开始运行
import pynvml if __name__ == '__main__': while True: pynvml.nvmlInit() # 这里的0是GPU id handle = pynvml.nvmlDeviceGetHandleByIndex(0) meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle) total = meminfo.total // 1024 ** 2 # 显卡总的显存大小 used = meminfo.used // 1024 ** 2 # 这里是字节bytes,所以要想得到以兆M为单位就需要除以1024**2 free = meminfo.free // 1024 ** 2 if free > 8000:
这里容易报错
Traceback (most recent call last): File "C:Anaconda3envs..libsite-packagespynvml.py", line 641, in _LoadNvmlLibrary nvmlLib = CDLL(os.path.join(os.getenv("ProgramFiles", "C:/Program Files"), "NVIDIA Corporation/NVSMI/nvml.dll")) File "C:Anaconda3envs..libctypes__init__.py", line 364, in __init__ self._handle = _dlopen(self._name, mode) OSError: [WinError 126] 找不到指定的模块。
这个需要在“C:Program FilesNVIDIA CorporationNVSMI”文件夹下面放入nvml.dll文件
这样将程序运行后,符合条件时,程序自动执行之后的代码
致谢
https://www.jb51.net/article/167777.htm
https://blog.csdn.net/m0_37661841/article/details/108626933