首页 > 解决方案 > 通用文件操作的多线程或多处理?

问题描述

我最近阅读了几个关于多线程和多处理之间区别的很棒的 SO 问题/答案。我不能说我理解了我阅读的所有内容,但我想我明白了要点。我认为了解更多信息的好方法是选择其中一个并将其用于我无论如何都需要做的工作。

也就是说,我有一堆文件夹,每个文件夹都有一堆mp3文件。我想重新采样所有文件夹中的所有文件,使其具有相同的采样率和通道数,然后将它们保存为.wav文件。我想我可以为每个进程分配一个文件夹,直到所有文件夹都被转换。

我读过多线程通常不会减少时间,因为线程很难并行运行。这就是为什么我倾向于这个选项。

多处理会比多线程提供更快的文件 IO 操作结果吗?

标签: pythonmultithreadingiomultiprocessing

解决方案


这取决于您要解决的问题中存在哪些依赖关系。如果您可以分配一个几乎没有依赖关系(共享数据、共享变量等)的任务来独立运行,那么多处理会很棒。只要启动进程不会比运行它花费更长的时间。(启动新流程很昂贵)

话虽如此,我认为为每个进程分配一个 mp3 转换任务会很好。只要确保您有一些东西可以监控哪些 mp3 文件已经被重新采样和转换,以防止重复进程。


推荐阅读