0

我正在尝试加快在 python 中处理文件所需的时间。我的想法是将任务分成n个线程。

例如,如果我有一个包含 1300 个项目的文件。我希望每个线程处理每第 n 个项目。每个项目都不依赖于任何其他项目,因此这里的顺序无关紧要

所以每个线程的工作流程都是这样的:

1) open file
2) iterate through items
3) if nth item then process, otherwise continue

我正在使用线程库来执行此操作,但我没有看到任何性能改进。

这是伪代码:

def driver(self):
        threads = []
        # Just picked 10 as test so trying to create 10 threads
        for i in range(0,10):
            threads.append(threading.Thread(target=self.workerFunc, args=(filepath, i, 10)))

        for thread in threads:
            thread.start()

        for thread in threads:
            thread.join()

def workerFunc(self, filepath):
        with open(filepath, 'rb') as file:
                obj = ELFFile(file)
                for item in obj.items:
                        if (item is not nth item):
                                continue
                        else:
                                process this item

由于每个线程都只是在读取文件,它应该能够自由地扫描文件,而不用关心其他线程在做什么或被它们阻塞,对吧?

我在这里俯瞰什么?

我唯一能想到的是我用来格式化这些文件的库(pyelftool ELFFile)有一些内部阻塞但我找不到它。还是我的计划存在根本缺陷?

编辑:请注意,我正在运行它的系统上有 32 个 CPU

4

0 回答 0