打开多个文件处理器会减慢写入时间吗?

2024-09-28 03:18:01 发布

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

在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()

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

^{pr2}$

Tags: 文件inimport处理程序forclose过程时间
2条回答

你提到如果你把它们合并起来,就会耗尽记忆,那是一堆神经元。(至少,根据我的经验,几百个神经元足够我们在CS课程中编写的玩具程序了。)

您可能不想创建100000个单独的文件来存储100000个独立的神经元,当然也不希望创建1000000个文件来存储1000000个神经元。目录查找、文件打开、读取、关闭和小的IO量的IO开销将极大地加重加载和保存大量神经元的负担。在

当然,如果你想的是50或100个神经元,那么不管发生什么,它都会很快进行,也许需要最简单的实现。在

但如果这是我的,我会努力为神经元建立良好的数据结构:也许你在一个给定级别上的所有神经元都可以用一个整数来描述神经元类型,用一个整数或双精度数组来描述每一个神经元的特征,这些级别描述的列表可以很容易地写入单独的文件中或者一个文件,以比较容易的为准。在

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

也许真正的问题应该是“如何改善我的神经元的存储?”在

更新

我认为即使是10000个神经元也有理由制作一个“组合”的存储格式。我只创建了10000个小文件,放下缓存来测试冷启动,然后分别重新读取每个文件。读取10000个文件用了14.6秒。只需0.1秒就可以读入一个包含与10000个文件相同数据的文件。在

如果你的人际网络每年开始“冷”一次,也许没什么大不了的。但是,如果您的网络每天启动十几次,您可能会对更简单的存储格式产生反感。在

我想多文件处理程序方法可能会比较慢,因为每个close()操作都会对文件系统执行一次写操作。如果你一次写一小段,这比让较低层(操作系统、文件系统、块设备)处理缓冲和写入慢(因为你写的字节可能小于扇区大小),从而确保你不会浪费大量小于扇区大小的写操作。在

相关问题 更多 >

    热门问题