在我的情况下,python 中的多线程 IO 任务对性能没有帮助

Multi threading IO tasks in python doesnt help performance in my case

提问人:ciyer 提问时间:5/10/2023 更新时间:5/10/2023 访问量:23

问:

我有一个需要读取的文件列表。但是,阅读它们需要一段时间。我尝试使用线程库,但似乎没有帮助。

def readFromLog():
    #does something with log files

def singleThreadReader(logFiles):
    for i in range(len(logFiles)):
        readFromLog(logFiles[i])

def multiThreadReader(logFiles):
    threads = [threading.Thread(target=readFromLog, args=(log_file,)) for log_file in logFiles]
    for thread in threads:
        thread.start()
    for thread in threads:
        thread.join()  

例如,我有 26 个文件。readFromLog() 处理单个文件大约需要 0.3 秒。因此,我大约需要 7.8 (26*0.3) 秒才能阅读所有 26 个文件。这是我调用 singleThreadReader() 时看到的。当我调用 multiThreadReader 时,我还获得了与 singleThreadReader() 相当的执行时间。我确实注意到,如果我取出thread.joins,时间会减少一半,但我认为我不想这样做。

我可能做错了什么?如果我可以同时读取所有 26 个文件,那将是理想的 - 执行时间总共为 0.3 秒。

python 多线程 io python-multithreading

评论

0赞 Solomon Slow 5/10/2023
如果所有文件都位于同一硬盘驱动器上,则使用多个线程读取它们可能无助于硬盘驱动器的运行速度更快。
0赞 chepner 5/10/2023
你到底在什么时候?如果删除联接导致时间减半,这听起来就像您只是在计时启动所有线程所需的时间。

答: 暂无答案