python - 打开多个文件处理程序是否会减慢写入时间?

标签 python file

在Python中,打开文件处理程序的过程比实际写入时间慢吗?

一个大文件,一个文件处理程序

import marshal
bigDataStructure = [[1000000.0 for j in range(1000000)] for i in range(1000000)]
f = open('bigFile' , 'w')
marshal.dump(bigDataStructure , f)
f.close()

多个较小的文件,多个文件处理程序

for i , row in enumerate(bigDataStructure):
 f = open(str(i) , 'w'):
 marshal.dump(row , f)
 f.close()

最佳答案

您提到如果将它们全部合并,则会耗尽内存 - 这是很多的神经元。 (至少,根据我的经验,几百个神经元对于我们在计算机科学类(class)中编写的玩具程序来说已经足够了。)

您可能不想创建 100,000 个单独的文件来存储 100,000 个单独的神经元,当然也不想创建 1,000,000 个文件来存储 1,000,000 个神经元。目录查找、文件打开、读取、关闭和少量 IO 的 IO 开销将极大地影响大量神经元的加载和保存。

当然,如果您考虑的是 50 或 100 个神经元,那么无论如何都会很快,并且可能需要最简单的实现。

但如果这是我的,我会努力尝试为神经元构建良好的数据结构:也许给定级别的所有神经元都可以用一个整数来描述,以选择神经元类型和整数数组或加倍来描述每个神经元的特征,并且这些级别描述的列表可以很容易地写入单独的文件或单个文件,以更容易的为准。

如果你的神经元在一个级别内改变类型,或者在级别之间没有完全连接,你可能会发现一些sparse matrix storage设计对于可以同时描述所有神经元的更大数据结构很有用。

也许真正的问题应该是“如何提高神经元的存储能力?”

更新

我认为即使是 10,000 个神经元也有理由制作“组合”存储格式。我刚刚创建了 10,000 个小文件,删除了缓存以测试冷启动,然后单独重新读取每个文件。读入 10,000 个文件需要 14.6 秒。读取包含与 10,000 个文件相同数据的单个文件仅花费 0.1 秒。

如果您的网络每年左右都会“冷”一次,也许这并不重要。但如果您的网络每天冷启动十几次,您可能会逐渐讨厌这种简单的存储格式。

关于python - 打开多个文件处理程序是否会减慢写入时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7883521/

相关文章:

python:转换为HTML特殊字符

python - Flask_sqlalchemy : why instance created by Model. query.filter_by().first() 不在模型中运行 __init__()

python - 尝试/除了使用 Python requests 模块的正确方法?

python - ^@ sign in .txt 文件提示什么

python 从内核日志中读取最后三行

node.js - 只读取修改后的数据

python - vscode Python 交互中的交互模式

python - 将 pandas 数据框中的列从 int 转换为 string

javascript - 如何在 JavaScript 中管理 PHP 代码中的空值

python - 这是 python 3 文件错误吗?