首页 文章

Python:并行或多线程组合来自不同文件的列表

提问于
浏览
-1

这是我的第一个问题 . 几天前我开始学习python,我遇到了问题 .

我制作了一些python文件,每个文件都运行for循环并将结果附加到列表中 . 所以每个文件都有自己的列表 .

例如file1.py生成list1,file2.py生成list2等...

我的目标是将所有这些列表组合在一起,所以我正在创建一个单独的“main.py”文件并导入列表名称,然后将它们组合在一起,如下所示:

from file1 import list1
from file2 import list2
from file3 import list3

combined_lists = [*list1, *list2, *list3]

这正如预期的那样正常 .

但问题是这种方法非常慢,因为它按照我导入的顺序逐个导入列表 .

例如,当我运行它时,它首先导入list1,当list1完成时,它启动list2,然后是list3等..最后将它们组合在一起 .

所以,因为我有400个不同文件的400个列表,这需要很长时间 .

有没有办法将所有列表并行导入和组合在一起?

与多线程或任何其他方法一样?

请注意,我不关心组合列表中项目的顺序 .

1 回答

  • 0

    您可以生成多个读取器进程(via a Pool,最好是),这些进程为Queue提供一个从中读取的消费者 . 您也可以使用 threading 执行此操作;一些相关的示例代码can be found here .

    请注意,在这种情况下,消费者可能不应该将结果收集到单个列表中,而是应该在每个元素从队列中运行时运行您要对其执行的实际操作 .

    然而...

    我制作了一些python文件,每个文件都运行for循环并将结果附加到列表中 . 所以每个文件都有自己的列表 .

    为什么?听起来这比现在更复杂,但不知道你怎么说不可能肯定 .

    如果没有更多信息,如果您要处理这些数据,听起来您的脚本应该生成CSV文件(或者它们应该组合成一个生成单个CSV文件的脚本) . 即使使用RDBMS也可能比每次导入时重新生成这些数据集更好,除非它们经常更改 .

相关问题