Python 使用多线程实现最大CPU效率

Python 使用多线程实现最大CPU效率,python,multithreading,cpu,Python,Multithreading,Cpu,我目前正在使用Python,我的程序如下所示: function(1) function(2) ... function(100) 在100%的CPU下执行一个函数需要约30分钟,因此执行该程序需要大量时间。这些函数访问同一个文件进行输入,进行大量运算并打印结果 引入多线程是否会减少程序完成所需的时间(我在一台多核机器上工作)?如果是,我应该使用多少线程 谢谢大家! 视情况而定 如果没有任何函数相互依赖,当然可以在单独的线程上运行它们(甚至可以使用多处理的进程,以避免全局解释器锁定)。根据系统

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

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

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

谢谢大家!

视情况而定

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

如果函数必须一个接一个地运行,那么就不能这样做。您必须重新构造程序,以尝试隔离独立的任务,或者接受可能存在P-complete(天生难以并行化)问题并继续前进

视情况而定

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


如果函数必须一个接一个地运行,那么就不能这样做。您必须重新构造程序,以尝试隔离独立的任务,或者接受可能存在P-complete(天生难以并行化)问题并继续前进

这取决于瓶颈在哪里。您是否重复读取/写入文件?你能一次完成所有的读/写操作吗?这取决于这些函数也在做什么。如果function2依赖于function1的输出,那么您就无能为力了。有一些很好的调度器(不确定python有什么特别的调度器),它们在允许多个作业并行运行方面做得很好,但这实际上取决于依赖项和瓶颈在哪里。多任务处理对于CPU受限的任务最有用。这取决于瓶颈在哪里。您是否重复读取/写入文件?你能一次完成所有的读/写操作吗?这取决于这些函数也在做什么。如果function2依赖于function1的输出,那么您就无能为力了。有一些很好的调度器(不确定python有什么特别之处),它们很好地允许多个作业并行运行,但这实际上取决于依赖项和瓶颈在哪里。多任务处理对CPU受限的任务最为有用。这些功能完全独立。然后,你会想看看——该模块应该具备你所需要的功能。只要您的任务是CPU限制的而不是IO限制的,您就会看到一些加速。+1多处理。至于要使用的进程数,假设您的CPU有限,请使用尽可能多的内核。这些功能是完全独立的。然后您会想看看-该模块应该有您想要的。只要您的任务是CPU限制的而不是IO限制的,您就会看到一些加速。+1多处理。就要使用的进程数量而言,假设您是CPU受限的,请使用尽可能多的内核。