我想了解Python的GIL。我最近有一项任务,我必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的某项任务的执行时间。我运行了一个python脚本来做同样的事情,但我在macOS上使用单独的终端窗口为不同的输入文件运行相同的python脚本。
我还在一个终端窗口中一个接一个地为每个输入文件运行它。与之前使用多个窗口的方法相比,每次执行的CPU时间都较低,其中每个程序花费两倍的时间但是一次性运行。 (注意:前一种方法中有4个终端窗口,python脚本只运行了一个用macOS上的clang编译的a.out可执行文件,并将输出存储在不同的文件中)。
任何人都可以解释为什么并行运行会导致每个程序变慢?它们是在单独的核心上运行还是GIL导致每个程序比在一个终端窗口中一次运行一个程序时要慢?
答案 0 :(得分:2)
每个终端窗口将启动一个新的python解释器,每个解释器都有自己的GIL。差异可能是由于操作系统级别的某些资源争用(磁盘i / o,内存,cpu周期)。