【问题标题】:multithreading or multiprocessing for general file operations?通用文件操作的多线程或多处理?
【发布时间】:2020-12-02 20:11:43
【问题描述】:

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

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

我了解到多线程通常不会减少时间,因为线程很难并行运行。这就是我倾向于这个选项的原因。

对于文件 IO 操作,多处理是否会比多线程提供更快的结果?

【问题讨论】:

    标签: python multithreading io multiprocessing


    【解决方案1】:

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

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

    【讨论】:

    • 嗨@Matthew,感谢您的回答。但是,我认为线程可以共享数据而进程不能?你的第二句话似乎在说相反的意思。
    • 很抱歉给您带来了困惑。据我了解,这是正确的。线程存在于进程中并共享资源,这就是它们可以并发运行但不能并行运行的原因。我相信多处理将是有效的解决方案。为每个 mp3 转换运行一个进程。不是多线程,因为那不会单独运行......他们会上下文并同时运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多