我目前正在使用Python,我的程序看起来像这样:
function(1)
function(2)
...
function(100)
在100%CPU下执行一项功能大约需要30分钟,因此执行该程序需要花费大量时间。这些函数访问相同的文件以进行输入,进行大量数学运算并打印结果。
引入多线程会减少程序完成所需的时间(我正在使用多核机器)?如果是这样,我应该使用多少个线程?
谢谢!
答案 0 :(得分:1)
取决于。
如果没有任何函数完全依赖于彼此,您当然可以在不同的线程(甚至是使用multiprocessing
的进程)上运行它们,以避免全局解释器锁定。您可以为每个核心运行一个进程,也可以运行100个进程或其间的任何数字,具体取决于系统的资源限制。 (如果您不拥有该系统,则某些管理员不喜欢向流程表发送垃圾邮件的用户。)
如果必须一个接一个地运行这些功能,那么你就无法做到。您必须重新构建程序以尝试隔离独立任务,或接受您可能具有P-complete(固有难以并行化)问题并继续前进。