python - 以编程方式设置文件写入速率

标签 python linux filesystems

我希望能够轻松设置基准测试程序的文件写入速率。这是我用来测试另一个系统的 python 程序。我希望能够控制文件创建的速度。我想到的一种方法是使用一个函数,该函数的参数是要创建的文件数。这可以在一个循环中调用,该循环跟踪时钟并且每秒只调用该函数。这将满足每秒创建一定数量的文件的要求。这样做的问题是可能会有大量死时间(毫秒,但仍然如此)。我想要持续加载。

最佳答案

您必须以某种方式跟踪实际执行文件 I/O 调用所花费的时间,并调整操作之间的休眠时间。调整需要持续进行,因为 sleep 和 IO 调用可能需要不同的时间,具体取决于系统负载。

如果你想平均每秒执行 N 次操作,你可以运行几秒(或更长时间)的循环,并在每一轮之后查看你是否运行得太快或太慢,并调整 sleep()基于此向上或向下的每个操作之间完成的时间。如果您跑得太快了,请增加 sleep 时间,如果您跑得有点太快,请减少 sleep 时间。

import time
# target rate: 100 ops / 1 second
target = 100.0
round_time = 1.0
# at first, assume the writes are immediate
sleepTime = round_time/target

ops = 0
t_start = time.time()

while True:
    #doYourIOoperationHere()
    ops += 1
    time.sleep(sleepTime)

    # adjust sleep time periodically
    if ops == target:
        t_end = time.time()
        elapsed = t_end - t_start
        difference = round_time - elapsed
        # print out the vars here to debug adjustment
        print "%d ops done, elapsed %.3f, difference %.3f" % (ops, elapsed, difference)
        # increase or decrease the sleep time, approach the target time slowly
        sleepTime += difference/target/2
        t_start = time.time()
        ops = 0

或者类似的东西(未经测试的简单代码)。这可能不适用于非常高的 IO 速率或系统负载,您可能必须在每次 sleep 调用时开始执行多个写入操作。此外,可能需要超过 1 秒的平均时间。

关于python - 以编程方式设置文件写入速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286012/

相关文章:

python - 检查 TeX 语法

node.js - React 创建应用程序热重载并不总是在 linux 上工作

jQuery:从文件系统读取文本文件

python - Python open(file,vr) 应该及时更新吗?

Python 通过函数向电子邮件添加附件

python - 将 html 模板存储在文档字符串中?

linux - 纯文本文件转换为html文件

python - CentOS上用python模块安装OpenCV出错

filesystems - 关于文件系统理论的书

python - 如何在系列的开头追加/插入项目?