gpt4 book ai didi

python - 具有可变索引的多线程应用程序中的异步文件IO

转载 作者:行者123 更新时间:2023-11-28 19:17:44 27 4
gpt4 key购买 nike

在我的一个程序中,我有以下方法:

def set_part_content(self, part_no, block_no, data):
with open(self.file_path, "rwb+") as f:
f.seek(part_no * self.constant1 + block_no * self.constant2)
f.write(data)

我这样做是因为以下原因:

  • 我必须在不同的索引处写入(f.seek 在这里的原因)
  • 并且此函数是线程安全的(感谢 with 语句)

我的问题是这个函数被调用了大约 10k 到 100k 次,显然它真的很慢(它代表了我最关键的一组功能之一的执行时间的一半),因为打开/关闭时间。

因为 f.seek,我无法直接在 __init__ 函数中打开文件以对其进行操作(如果 2 线程使用该函数同时,它会导致这两者之一的索引错误,这很关键)。

有没有什么模块/方法可以加速这个功能?

最佳答案

我不熟悉 python,所以我不确定 with 语句是否会使该函数线程安全。

如果是这样,您将不会有 2 个线程同时使用该函数。

如果不是,则您的函数不是线程安全的。您需要一个锁来确保线程安全。您可以查看implementing file locks using Python's with statement .另一种选择是使此函数异步,并让单线程处理所有写入。

关于python - 具有可变索引的多线程应用程序中的异步文件IO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515581/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com