我正在编写一个程序,它需要在一个非常大的(~6GB) csv文件上运行算法,这个文件使用read_csv()装载熊猫。我现在的问题是,每当我调整我的算法,需要重新模拟(这是非常经常的),我需要等待30岁左右的数据集加载到内存,然后另一个30来加载相同的数据集到一个图形模块,这样我就可以直观地看到发生了什么。但是,一旦加载了它,操作就会很快完成。
到目前为止,我已经尝试使用mmap,并将数据集加载到RAM磁盘中进行访问,但没有任何改进。
我希望找到一种方法,用一个进程将数据集加载到内存中,然后使用算法处理进程访问内存中的数据集,每次更改时都会重新运行。
This thread似乎与我所需要的东西很接近,但它使用的是多重处理,它需要在相同的上下文中运行所有的东西。
我不是计算机工程师(我是电气工程师),所以我不确定我想要什么甚至是可能的。不过,如有任何帮助,我们将不胜感激。
谢谢,
发布于 2022-04-19 02:17:59
找到了一个有效的解决方案,尽管它与我最初的要求没有直接关系。
与其将一个大文件加载到内存中并在独立进程之间共享,我发现瓶颈实际上是熊猫库中的解析功能。特别是CSV解析,因为CSV在数据存储方面效率低下。
我开始用python-本机泡菜格式存储我的文件,熊猫通过to_pickle()和read_pickle()函数支持这种格式。这大大减少了我的负载时间从~30到~2s。
https://stackoverflow.com/questions/71895854
复制相似问题