python - 通用文件操作的多线程或多处理?
问题描述
我最近阅读了几个关于多线程和多处理之间区别的很棒的 SO 问题/答案。我不能说我理解了我阅读的所有内容,但我想我明白了要点。我认为了解更多信息的好方法是选择其中一个并将其用于我无论如何都需要做的工作。
也就是说,我有一堆文件夹,每个文件夹都有一堆mp3
文件。我想重新采样所有文件夹中的所有文件,使其具有相同的采样率和通道数,然后将它们保存为.wav
文件。我想我可以为每个进程分配一个文件夹,直到所有文件夹都被转换。
我读过多线程通常不会减少时间,因为线程很难并行运行。这就是为什么我倾向于这个选项。
多处理会比多线程提供更快的文件 IO 操作结果吗?
解决方案
这取决于您要解决的问题中存在哪些依赖关系。如果您可以分配一个几乎没有依赖关系(共享数据、共享变量等)的任务来独立运行,那么多处理会很棒。只要启动进程不会比运行它花费更长的时间。(启动新流程很昂贵)
话虽如此,我认为为每个进程分配一个 mp3 转换任务会很好。只要确保您有一些东西可以监控哪些 mp3 文件已经被重新采样和转换,以防止重复进程。
推荐阅读
- swift - 带有协议泛型的初始化程序不起作用
- sql - 当插入/更新发生在同一个表中时触发更新特定列
- windows - 使用 PowerShell 创建启动 PowerShell 脚本的快捷方式
- c++ - 自定义“数字”类 - 可以代替“浮点”或其他内置类型工作吗?
- loops - 如何巩固这些循环
- sql - 如何解密 MS SQL 十六进制文件名?
- python - 如何实现具有特殊误差函数和惩罚的梯度下降
- node.js - 节点 JS 部署到 Azure Web 应用服务错误 - “您无权查看此目录或页面。”
- matlab - 如何使用 Matlab 将抽取的图像内插 2 倍?
- android - Android:应用程序退出后应用程序未由 AlarmManager 启动