Python repeatable timer to implement recycled printing via schedule

import uuid
from datetime import datetime
import psutil
import os
import time
import threading
from tkinter import messagebox
import asyncio
import schedule

def get_memory():
    pid=os.getpid()
    proc=psutil.Process(pid)
    mem_info=proc.memory_info()
    rss_mem=f'{mem_info.rss/1024/1024:.2f} M'
    vms_mem=f'{mem_info.vms/1024/1024:.2f} M'

    sys_mem=psutil.virtual_memory()
    total_mem=f'{sys_mem.total/1024/1024/1024:.2f} G'
    avail_mem=f'{sys_mem.available/1024/1024/1024:.2f} G'
    used_rate=f'{sys_mem.percent}%'

    return f'{datetime.now()},PId:{pid},proc rss mem:{rss_mem},virtual mem:{vms_mem},total mem:{total_mem},available mem:{avail_mem},used rate:{used_rate}'

idx=0
idx_lock=threading.Lock()

def get_idx_time_uuid():
    global idx
    with idx_lock:
        idx+=1
        current_idx=idx
        return f'{current_idx}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}_{uuid.uuid4().hex}'

def get_idx_uuid_time():
    global idx
    with idx_lock:
        idx+=1
        current_idx=idx
        return f'{current_idx}_{uuid.uuid4().hex}_{datetime.now().strftime('%Y%m%d%H%M%S%f')}'

def print_time_uuid():
    print(get_idx_time_uuid())

def print_uuid_time():
    print(get_idx_uuid_time())

def print_mem():
    print(get_memory())

schedule.every(1).seconds.do(print_time_uuid)
schedule.every(1).seconds.do(print_uuid_time)
schedule.every(1).seconds.do(print_mem)

try:
    while True:
        schedule.run_pending()

except Exception as ex:
    print(f'{datetime.now()},{str(ex)}')

 

image

 

 

image

 

 

image

 

posted @ 2026-02-22 21:22  FredGrit  阅读(15)  评论(0)    收藏  举报