【发布时间】:2016-04-05 14:06:08
【问题描述】:
所以我正在运行多个函数,每个函数从百万行 .txt 文件中提取一个部分。每个函数都有一个 for 循环,该循环贯穿百万行文件中的每一行。
它从这些行中获取信息以查看它是否与其他 2 个文件中的信息匹配,一个大约 50,000-100,000 行长,另一个大约 500-1000 行长。我通过在其他 2 个文件中运行 for 循环来检查这些行是否匹配。一旦信息匹配,我将输出写入一个新文件,所有函数都写入同一个文件。该程序每分钟将产生大约 2,500 行,但运行时间越长,速度就越慢。另外,当我运行其中一个函数时,它每分钟运行大约 500 个,但是当我使用 23 个其他进程执行它时,它每分钟只运行 2500 个,这是为什么呢?
有人知道为什么会这样吗?无论如何,我可以导入一些东西以使程序更快地运行/读取文件,我已经在使用with "as file1:" 方法。
可以重做多进程以更快地运行吗?
【问题讨论】:
-
更多线程!= 更快。这取决于你有多少核心
-
如果您的所有数据都可以放入内存,您可以尝试使用 pandas 模块处理您的数据 - 它非常快速且非常高效。不要忘记最慢的部分——磁盘 IO 系统,它很可能是你的瓶颈,而不是你的线程数
-
1.你有几个核心? 2. 这个进程使用的 CPU 占总 CPU 的比例是多少(如果接近 100%,那么更多的内核将无济于事)。 3. 线程如何到达“他们”部分的开头?如果他们必须先阅读 n 行,我很惊讶这并没有减慢速度。
-
我还建议您打开一个新问题,其中包含更详细的描述,您将在其中提供输入数据的匿名样本和预期输出
标签: python for-loop large-files python-multiprocessing cpu-speed