我正在使用 python 进行开发,对游戏来说还是新手,我想确保我正确地解决了这个问题。我很乐意接受所有建议。
想象一下,尝试使用存储在多个平面文件中的数据,在许多情况下总大小超过 20-35 GB。在最一般的情况下,这些文件可能是分隔的(csv、tab)或可能只是固定宽度。目标是获取这些文件或每个文件的某个子集,解析输入(每列代表数据中的一个变量),并将其发送到某个目的地(可能是本地或远程 sql,各种其他本地文件输出格式,包括文本或某些专有数据格式,例如 stata 的 .dta)
目标是使用可用的系统资源以尽可能快的方式执行此操作(我猜是每秒 kb 吗?)
问题:
使用已编译的 C 进行读取操作是否会提高效率?如果是这样,我应该学习如何使用哪个库?而且,c 也应该进行解析和输出吗?
如果文件以 .zip 或 .gz 的形式出现,是否应该在读取和写入之前解压缩整个文件,还是将其压缩并使用能够从压缩文件中读取的库?
程序应该使用多线程吗?我想象读取文件的某个子集(例如,一次 n 行),解析和输出,例如,j 个线程。一次读取一行文件是最佳的并不明显......而且似乎最佳线程和进程数将取决于可用资源和作业的大小。
因此,也许代码应该足够“智能”,以最佳地确定要使用多少线程以及每个线程应该完成多少工作。如何衡量和比较不同方法之间的效率?
程序是否应该能够动态地执行此操作并根据其性能选择输入输出方法?(方法 A 是否总是严格控制方法 B,或者在部署环境中进行特殊更改很重要)
需要明确的是,我愿意接受几乎任何级别的代码效率低下,以换取资源效率的不可忽略的改进
我希望这些问题能让我清楚地了解我想要弄清楚的事情。我的编程经验主要限于科学/统计软件包,所以如果我的任何问题归结为“rtm”,请温和并建议适当的手册。