记录自己最近有趣的发现

由于实验室各方面条件都不到位,只能在自己笔记本上跑程序,有时候上一个程序跑完,下一个程序就得接着跑起来,最大化利用时间吧。
但有时候程序在半夜就结束运行了,此时处于无人值守状态,现提供两种解决方案

定时运行

这个方法需要估计出上一个程序结束的大概时间,然后设置好下一个程序运行的时间

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