GIL是否会影响单独终端窗口中python脚本的并行处理?

GIL是否会影响单独终端窗口中python脚本的并行处理?,python,python-3.x,terminal,parallel-processing,gil,Python,Python 3.x,Terminal,Parallel Processing,Gil,我试图理解Python的GIL。我最近有一项任务,我必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的特定任务的执行时间。我运行了一个python脚本来做同样的事情,但是我在macOS上使用了不同的终端窗口来为不同的输入文件运行相同的python脚本 我还在一个终端窗口中为每个输入文件一个接一个地运行它。与之前使用多个窗口的方法相比,每次执行的CPU时间较短,其中每个程序花费的时间是以前的两倍,但同时运行。(注意:在前面的方法中有4个终端窗口,python脚本只运行在macOS上使用cl

我试图理解Python的GIL。我最近有一项任务,我必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的特定任务的执行时间。我运行了一个python脚本来做同样的事情,但是我在macOS上使用了不同的终端窗口来为不同的输入文件运行相同的python脚本

我还在一个终端窗口中为每个输入文件一个接一个地运行它。与之前使用多个窗口的方法相比,每次执行的CPU时间较短,其中每个程序花费的时间是以前的两倍,但同时运行。(注意:在前面的方法中有4个终端窗口,python脚本只运行在macOS上使用clang编译的a.out可执行文件,并将输出存储在不同的文件中)


有人能解释为什么并行运行它们会导致每个程序的速度变慢吗?它们是在单独的内核上运行的,还是GIL导致每个程序都比我在一个终端窗口中一次运行一个程序慢?

每个终端窗口将启动一个新的python解释器,每个解释器都有自己的GIL。这种差异可能是由于在操作系统级别争夺某些资源(磁盘i/o、内存、cpu周期).

程序是否访问磁盘或其他共享的内容?该程序从stdin获取一个数字输入,并将3个字符串打印到stdout,我使用<和>,然后使用每个程序的不同文件名重定向到文件。我不认为它们共享任何内容,因为a.out只是一个排序程序,除了main之外还有一个函数。每个脚本都使用popen()运行a.out,并将输出重定向到不同的文本文件。所以这不是吉尔,我看不出他们还有什么共同点。可能是CPU周期。如果你有一个多核CPU和磁盘,这可能是I/O争用,但是的,这肯定不是GIL