gpt4 book ai didi

python - 使用python,选项和注意事项在文件读/写中的资源使用

转载 作者:行者123 更新时间:2023-11-29 02:36:30 24 4
gpt4 key购买 nike

我正在用 python 开发,对游戏还是个新手,我想确保我正确地解决了这个问题。我很乐意接受所有建议。

想象一下,尝试使用存储在多个平面文件中的数据,在许多情况下,合并大小超过 20-35 GB。在最一般的情况下,这些文件可能是分隔的(csv、制表符)或可能只是固定宽度。目标是获取这些文件或每个文件的某个子集,解析输入(每列代表数据中的一个变量),并将其发送到某个目的地(可以是本地或远程 sql,各种其他本地文件)输出格式包括文本或一些专有数据格式,如 stata 的 .dta)

目标是使用可用的系统资源以最快的方式执行此操作(我猜是每秒 kb?)

问题:

  1. 使用编译后的 C 执行读取操作是否会提高效率?如果是这样,我应该学习如何使用哪个库?而且,c也应该做解析和输出吗?

  2. 如果文件是 .zip 或 .gz 格式,是否应该在读写之前解压缩整个文件,还是保持压缩状态并使用能够读取压缩文件的库?

  3. 程序应该使用多线程吗?我想象读取文件的某些子集(比如,一次 n 行),解析和输出,比如说,j 个线程。一次一行读取文件是最佳的并不明显……而且线程和进程的最佳数量似乎将取决于可用资源和作业的大小。
    因此,也许代码应该足够“智能”以最佳地确定要使用多少线程以及每个线程应该完成多少工作。

  4. 如何衡量和比较不同方法之间的效率?

  5. 程序是否应该能够动态地执行此操作并根据其性能选择输入输出方法? (方法 A 是否始终严格支配方法 B,或者对部署环境进行特殊更改很重要)

明确一点,我愿意接受几乎任何级别的代码效率低下,以换取资源效率的不可忽视的改进

我希望这些问题能让我清楚地了解我要弄清楚的是什么。我的编程经验主要局限于科学/统计包,所以如果我的任何问题归结为“rtm”,请温和并建议适当的手册。

最佳答案

Is there an efficiency gain from using compiled C to do the read operations?

不是真的。限制将是 I/O 带宽,Python 使用底层 C 库。

If the file comes in a .zip or .gz, should the entire file be decompressed prior to reading and writing, or do you leave it compressed and use a library capable of reading from the compressed file?

首先,让其他一切正常运行。不要试图预先巧妙地解决这个问题。 Python 的 ZipFile 实现可以通过打开 ZIP 存档成员而不展开它们来处理 CSV 格式文件。

这样更快吗?你无法提前知道。你只能通过 build 它并测量你 build 的东西来知道。不要拧你的手。这只是几行代码。构建两者。

Should the program use multithreading?

没有。

使用操作系统级多处理。

python something.py source.zip | python part2.py | python part3.py | python part4.py >result

这将非常快,而且——无需太多工作——将使用所有可用的操作系统资源。

How does one measure and compare efficiency between different methods?

嗯……这是个愚蠢的问题。你 build 它并测量它。耗时和其他任何东西一样好。如果您感到困惑,请使用秒表。严重地。没有魔法。

Should the program be able to do this dynamically and choose input output methods based on their performance?

没有。

(Will method A always strictly dominate method B, or do idiosyncratic changes in the deployment environment matter)

是的。是的。有些方法总是更有效。然而,操作系统极其复杂,因此没有什么可以替代简单、灵活、组件化的设计。

构建可以灵活重组的简单部件。

不要提前动手。尽可能设计正确的数据结构和算法。如果你做不到,就选择一些明智的事情然后继续前进。构建一些东西并进行调整比为细节烦恼却发现它们根本不重要要容易得多。

  1. 构建一些东西。

  2. 衡量。

  3. 找到瓶颈。

  4. 优化已证实的瓶颈。

关于python - 使用python,选项和注意事项在文件读/写中的资源使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4273259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com