gpt4 book ai didi

python - 在 Python 中使用缓冲区写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 01:50:45 25 4
gpt4 key购买 nike

我正在使用 Tshark(命令行 wireshark)嗅探网络数据包,并在收到它们时将它们写入文件。我的代码块类似于以下内容:

documents = PriorityQueue(maxsize=0)
writing_enabled = True
with open("output.txt", 'w') as opened_file:
while writing_enabled:
try:
data = documents.get(timeout=1)
except Exception as e:
#No document pushed by producer thread
continue
opened_file.write(json.dumps(data) + "\n")

如果我从 Tshark 线程接收文件,我将它们放入队列,然后另一个线程使用上面的代码将其写入文件。但是,在文件达到 600+ MB 后,进程变慢,然后将状态更改为“无响应”。经过研究,我认为这是因为打开文件方法的默认缓冲机制。将 with open("output.txt", 'w') as opened_file: 更改是否合理:into with open("output.txt", 'w', 1000) as opened_file: 在写入模式下使用 1000 字节的缓冲区?或者有另一种方法可以克服这个问题吗?

最佳答案

要将内部缓冲区写入文件,您可以使用文件刷新功能。但是,这通常应该由具有默认缓冲区大小的操作系统来处理。如果你想指定你自己的缓冲区大小,你可以使用类似这样的东西来打开你的文件:

f = open('file.txt', 'w', buffering=bufsize)

另请参阅以下问题:How often does Python flush to file

除了刷新缓冲区,您还可以尝试使用滚动文件,即如果当前打开的文件的大小超过一定大小,则打开一个新文件。如果您打算写入大量数据,这通常是一种很好的做法。

关于python - 在 Python 中使用缓冲区写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58079585/

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