我的问题很简单:如果我有一个代码的for循环迭代了150次。将其拆分为3个文件,其中每个for循环迭代50次是否更快?如果是,我是同时运行这3个代码,还是一次运行一个代码?另一种选择是在这3个文件中使用python multiprocessing
,但同样的问题出现了,我是一次运行所有文件还是一次运行一个?
TL;DR-这取决于情况。
在cpython中,全局解释器锁(GIL(确保给定进程中一次只有一个线程可以运行python代码。如果您的循环是CPU绑定的,那么在单个进程中添加线程不会加快速度。如果您的循环由于某种原因而休眠,比如从磁盘读取数据,线程可以加快它的速度。使用多处理,由于GIL是按进程的,因此可以加快处理速度。
多线程和多处理会产生开销,包括启动线程/进程、将数据发送到线程/进程和返回结果的成本。根据你正在做的事情,这可能比循环本身更昂贵。
因此,这个问题没有一个普遍的答案。它高度依赖于任务。