如何正确关闭船长原型以避免内存泄漏?

2024-09-29 21:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想我有内存问题,我想关闭我用pycapnp读取的文件。最好的方法是什么?他正在做:

    def __getitem__(self, idx: int) -> DagNode:
        # gets the file idx for the value we want
        file_idx = self.get_file_index(idx)
        file_name = self.list_files_current_split[file_idx]
        f = open(file_name)
        capnp_file = dag_api_capnp.Dag.read_packed(f, traversal_limit_in_words=2 ** 64 - 1)
        # do stuff with it
        node = DagNode(capnp_file.field1)
        # close both files
        capnp_file.finish()
        f.close()
        return node

在我的场景中,我有一个以captian proto格式保存的数据集,我想在提取了所需信息后关闭captian proto文件(以避免内存问题,而不是浪费空间!)。正确的方法是什么

.finish()

方法保证做到这一点?我不必给垃圾收集器打电话……对吗

提前谢谢

参考:


Tags: 文件the方法内存nameselfgithubfiles
1条回答
网友
1楼 · 发布于 2024-09-29 21:34:44

您是否尝试过python内存映射文件支持? mmap 它的工作原理很像操作系统处理巨大的交换文件。它非常快速和高效。使用readBytes收集数据块(猜测是遍历限制?)

简言之,所需的所有数据都在程序内存空间中的适当时间可用,数据的进一步加载由mmap负责

希望这有帮助

相关问题 更多 >

    热门问题