树莓派4B挂着的python脚本跑着跑着被系统terminated

在2G内存的树莓派4B上挂了几个脚本一直跑着,一般7-10天就会被系统强制杀掉,毕竟python的内存优化嘛比较呵呵。
通过下面命令可以直接查看你的内存使用状况

free -h

其中free表示真空着的内存,available表示被认为可用的内存
所以我做了个定时监控,查看到Avaliable的内存小于总内存的15%的时候对脚本进行一下重启

import schedule, psutil, sys, os, threading

def run_thread(jobs):
    try:
        threading.Thread(target=jobs).start()
    except:
        pass

def get_memory_status_with_psutil():
    mem = psutil.virtual_memory()
    #usage = float( mem.used/ mem.total) * 100
    #free= float( mem.free/ mem.total) * 100
    available= float( mem.available/ mem.total) * 100
    return free

def restart():
    os.execl(sys.executable, sys.executable, * sys.argv)

def memory_check():
    available= get_memory_status_with_psutil()
    print(available)
    if available< 15:
        restart()

if __name__ == "__main__":
    schedule.every().hour.do(run_thread, memory_check)
    while True:
        schedule.run_pending()
        time.sleep(1)
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在操作系统中,Python使用优先级调度算法来管理进程的状态。进程的状态可以分为四种:ready(就绪)、running(运行)、waiting(等待)和terminated(终止)。 就绪状态是指进程已经准备好执行,但由于CPU资源有限,操作系统尚未选择它来运行。当进程处于就绪状态时,它被放置在就绪队列中,等待操作系统将其挑选出来进入运行状态。 运行状态是指进程正在执行,并且占用了CPU资源。操作系统会选择就绪队列中的某个进程进入运行状态,让其执行相应的任务。当进程处于运行状态时,它会按照预定的顺序执行指令,直至完成或被中断。 等待状态是指进程因为某些原因无法继续执行,例如等待I/O操作完成或等待某个事件发生。当进程处于等待状态时,它会从运行状态转变为等待状态,释放CPU资源并进入等待队列中。一旦等待的事件发生或I/O操作完成,进程会被重新分配到就绪队列。 终止状态是指进程已经执行完毕或被用户取消,无法再次被调度执行。当进程处于终止状态时,它将会被从系统中移除,释放相应的资源。 在Python中,可以通过操作系统提供的相关库函数来获取进程的状态信息,并根据不同的状态进行相应的处理。优先级调度算法会根据进程的优先级来选择进入运行状态的进程,以提高系统的效率和响应速度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值