鱼C论坛

 找回密码
 立即注册
查看: 1446|回复: 3

修改系统时间,用了无限循环后,磁盘使用率直接拉满了。

[复制链接]
发表于 2023-12-26 20:19:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import time
import os

while True:
    # 获取当前时间戳
    past_time = time.time()
    # 时间戳修改
    new_time = past_time + 11
    # 转换为指定格式
    new_time = time.strftime("%X", time.localtime(new_time))
    # 转换字符串
    new_time = str(new_time)
    # 修改系统时间
    os.system('time '+new_time)
    # 延迟
    time.sleep(0.2)


1.png

各位大佬,我应该怎么做才能降低这个磁盘使用率,延迟不能加了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-26 20:19:38 | 显示全部楼层
你在循环中频繁地修改系统时间,导致了磁盘使用率飙升。这是因为操作系统会记录文件的访问和修改时间,每次修改系统时间都会导致大量文件的访问和更新,从而增加磁盘的使用率。

要降低磁盘使用率,你可以采取以下几种方法:

1. 使用os.utime()函数修改文件的访问和修改时间,而不是修改系统时间。这样只会影响指定的文件,而不会对整个系统产生影响。你可以使用os.stat()函数获取文件的最后访问和修改时间,然后利用os.utime()函数修改时间。
import osimport timefilename = 'your_file_path'  # 替换成你要修改的文件路径while True:    # 获取当前时间戳    past_time = time.time()    # 时间戳修改    new_time = past_time + 11    # 修改文件访问和修改时间    os.utime(filename, (new_time, new_time))    # 延迟    time.sleep(0.2)
2. 指定一个更大的延迟时间,例如1秒,以降低循环中修改时间的频率。这样可以减少对磁盘的访问次数,降低磁盘使用率。
import timeimport oswhile True:    # 获取当前时间戳    past_time = time.time()    # 时间戳修改    new_time = past_time + 11    # 转换为指定格式    new_time = time.strftime("%X", time.localtime(new_time))    # 转换字符串    new_time = str(new_time)    # 修改系统时间    os.system('time '+new_time)    # 延迟    time.sleep(1)
通过以上方法,你可以减少对磁盘的访问次数,降低磁盘使用率。不过请注意,修改系统时间可能会对系统产生一些意外影响,建议在实际应用中慎重使用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-26 20:30:24 | 显示全部楼层
FishC 发表于 2023-12-26 20:19
你在循环中频繁地修改系统时间,导致了磁盘使用率飙升。这是因为操作系统会记录文件的访问和修改时间,每次 ...

不是修改文件,目标程序设置了数据间隔,通过修改本地时间能绕过这个程序的设置,实现不停地发送数据。所以想看看能不能有什么办法无限循环的同时,降低磁盘的使用率。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-26 20:30:53 | 显示全部楼层
yuxf14 发表于 2023-12-26 20:30
不是修改文件,目标程序设置了数据间隔,通过修改本地 ...

如果你想实现无限循环同时降低磁盘使用率,可以考虑使用多线程或者异步编程的方法。这样你可以在一个线程中执行无限循环操作,而在另一个线程中控制磁盘使用率。下面是一个使用多线程的示例代码:
import timeimport osimport threading# 无限循环的操作def infinite_loop():    while True:        # 在这里写你想要执行的操作        pass# 修改系统时间的操作def modify_system_time():    while True:        # 获取当前时间戳        past_time = time.time()        # 时间戳修改        new_time = past_time + 11        # 转换为指定格式        new_time = time.strftime("%X", time.localtime(new_time))        # 转换字符串        new_time = str(new_time)        # 修改系统时间        os.system('time '+new_time)        # 延迟        time.sleep(0.2)# 创建线程loop_thread = threading.Thread(target=infinite_loop)time_thread = threading.Thread(target=modify_system_time)# 启动线程loop_thread.start()time_thread.start()# 等待线程结束loop_thread.join()time_thread.join()
通过使用多线程,你可以同时执行无限循环操作和修改系统时间的操作,从而实现你想要的效果。注意,修改系统时间可能会对系统产生一些意外影响,请谨慎使用。另外,多线程编程需要注意线程安全和资源竞争的问题,需要仔细设计和测试代码。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 22:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表