1

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

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

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

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

谢谢!

4

1 回答 1

1

这取决于。

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

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

于 2012-07-26T16:18:15.877 回答