我正在尝试理解Python的GIL。我最近有一项作业,必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的特定任务的执行时间。我运行了一个 python 脚本来执行相同的操作,但我在 macOS 上使用单独的终端窗口为不同的输入文件运行相同的 python 脚本。
我还在一个终端窗口中为每个输入文件一个接一个地运行了这一切。与以前的多个窗口方法相比,每次执行的 CPU 时间更低,每个程序花费两倍的时间但同时运行。 (注意:之前的方法有 4 个终端窗口,并且 python 脚本仅运行在 macOS 上使用 clang 编译的 a.out 可执行文件,并将输出存储在不同的文件中)。
谁能解释为什么并行运行它们会导致每个程序变慢?它们是否在单独的内核上运行,或者 GIL 是否导致每个程序比我在一个终端窗口中一次运行一个程序慢?
最佳答案
每个终端窗口都会启动一个新的Python解释器,每个解释器都有自己的GIL。差异可能是由于操作系统级别对某些资源的争用(磁盘 I/O、内存、CPU 周期)。
关于python - GIL 是否会影响单独终端窗口中 python 脚本的并行处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42757209/