yuxf14 发表于 2023-12-26 20:19:23

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

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)




各位大佬,我应该怎么做才能降低这个磁盘使用率,延迟不能加了。

FishC 发表于 2023-12-26 20:19:38

你在循环中频繁地修改系统时间,导致了磁盘使用率飙升。这是因为操作系统会记录文件的访问和修改时间,每次修改系统时间都会导致大量文件的访问和更新,从而增加磁盘的使用率。

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

1. 使用os.utime()函数修改文件的访问和修改时间,而不是修改系统时间。这样只会影响指定的文件,而不会对整个系统产生影响。你可以使用os.stat()函数获取文件的最后访问和修改时间,然后利用os.utime()函数修改时间。

import os
import time

filename = '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 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(1)

通过以上方法,你可以减少对磁盘的访问次数,降低磁盘使用率。不过请注意,修改系统时间可能会对系统产生一些意外影响,建议在实际应用中慎重使用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

yuxf14 发表于 2023-12-26 20:30:24

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

不是修改文件,目标程序设置了数据间隔,通过修改本地时间能绕过这个程序的设置,实现不停地发送数据。所以想看看能不能有什么办法无限循环的同时,降低磁盘的使用率。

FishC 发表于 2023-12-26 20:30:53

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

如果你想实现无限循环同时降低磁盘使用率,可以考虑使用多线程或者异步编程的方法。这样你可以在一个线程中执行无限循环操作,而在另一个线程中控制磁盘使用率。下面是一个使用多线程的示例代码:

import time
import os
import 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 修改系统时间,用了无限循环后,磁盘使用率直接拉满了。