我目前正在使用 Python,我的程序如下所示:
function(1)
function(2)
...
function(100)
在 100% CPU 的情况下,执行一个函数大约需要 30 分钟,因此执行程序需要很长时间。这些函数访问同一文件进行输入,进行大量数学运算并打印结果。
引入多线程会减少程序完成所需的时间(我正在多核机器上工作)吗?如果是这样,我应该使用多少个线程?
谢谢!
最佳答案
这取决于。
如果这些函数根本没有相互依赖,您当然可以在单独的线程上运行它们(甚至使用多处理
的进程,以避免全局解释器锁定)。您可以为每个核心运行一个进程,也可以运行 100 个进程,或者运行介于两者之间的任意数量,具体取决于系统的资源限制。 (如果您不拥有该系统,某些管理员不喜欢向进程表发送垃圾邮件的用户。)
如果这些函数必须一个接一个地运行,那么你就不能这样做。您必须重组程序以尝试隔离独立任务,或者接受可能存在 P 完全(本质上难以并行化)问题并继续前进。
关于python - 使用多线程实现 CPU 效率最大化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11673581/