python - 使用多线程实现 CPU 效率最大化

标签 python multithreading cpu

我目前正在使用 Python,我的程序如下所示:

function(1)
function(2)
...
function(100)

在 100% CPU 的情况下,执行一个函数大约需要 30 分钟,因此执行程序需要很长时间。这些函数访问同一文件进行输入,进行大量数学运算并打印结果。

引入多线程会减少程序完成所需的时间(我正在多核机器上工作)吗?如果是这样,我应该使用多少个线程?

谢谢!

最佳答案

这取决于。

如果这些函数根本没有相互依赖,您当然可以在单独的线程上运行它们(甚至使用多处理的进程,以避免全局解释器锁定)。您可以为每个核心运行一个进程,也可以运行 100 个进程,或者运行介于两者之间的任意数量,具体取决于系统的资源限制。 (如果您不拥有该系统,某些管理员不喜欢向进程表发送垃圾邮件的用户。)

如果这些函数必须一个接一个地运行,那么你就不能这样做。您必须重组程序以尝试隔离独立任务,或者接受可能存在 P 完全(本质上难以并行化)问题并继续前进。

关于python - 使用多线程实现 CPU 效率最大化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11673581/

相关文章:

Java 不使用所有可用的 CPU

Java 线程执行后被多次中断

process - 如何在 OpenMPI 中用 --map-by 替换 --cpus-per-proc

python - 使用 None 转换为日期时间

java - 如何确保传递给方法的集契约(Contract)步?

python - 如何使用 PyDev 调试 Django 单元测试?

Java - 为什么这个基本的 ticking 类会占用这么多 cpu?

node.js - 如何找出Node.js服务器CPU 100%的原因?

python - 使用 Django Rest Framework 在 Django 模型中使用 uuid 作为外键

python - 如何在 Python 中矢量化点积?