问题描述
我最近阅读了关于多线程和多处理之间差异的一些很棒的SO问题/答案。我不能说我理解我阅读的所有内容,但我想我的要点是。我认为学习更多的好方法是选择一个或另一个,然后将其用于我需要做的工作。
就是说,我有一堆文件夹,每个文件夹都有一堆mp3
文件。我想重新采样所有文件夹中的所有文件,使其具有相同的采样率和通道数,然后将它们另存为.wav
文件。我想我可以为每个进程分配一个文件夹,直到所有文件夹都已转换。
我已经读到,多线程通常不会减少时间,因为线程很难并行运行。这就是为什么我倾向于这个选项。
与多线程相比,多处理是否能为文件IO操作提供更快的结果?
解决方法
这取决于您要解决的问题中存在哪些依赖性。如果您可以分配一个几乎没有或完全没有依赖项(共享数据,共享变量等)的任务来独立运行,那么多处理将非常有用。只要启动流程所花的时间不会比运行它所需的时间长。 (开始新流程很昂贵)
话虽如此,我认为为每个进程分配一个mp3转换任务会很好。只需确保您有什么东西可以监视哪些mp3文件已经被重新采样和转换,以防止重复的过程。