GIL 是否会影响单独终端 windows 中 python 脚本的并行处理?
Does GIL affect parallel processing of a python script in separate terminal windows?
我正在尝试了解 Python 的 GIL。我最近有一个任务,我必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的特定任务的执行时间。我 运行 一个 python 脚本来做同样的事情,但我在 macOS 上使用单独的终端 windows 来 运行 相同的 python 脚本用于不同的输入文件。
我还 运行 一个终端 window,一个接一个,每个输入文件。与之前的多个 windows 方法相比,每次执行的 CPU 时间更短,其中每个程序花费两倍的时间,但一次 运行 。 (注意:在以前的方法中有 4 个终端 windows,而 python 脚本只有 运行 一个 a.out 可执行文件,在 macOS 上用 clang 编译并将输出存储在不同的文件中) .
谁能解释为什么 运行并行运行它们会导致每个程序变慢?他们 运行 是在不同的核心上还是 GIL 导致每个程序都比我 运行 在一个终端 window 一次一个程序慢?
每个终端 window 将启动一个新的 python 解释器,每个解释器都有自己的 GIL。差异可能是由于在 OS 级别争用某些资源(磁盘 i/o、内存、cpu 周期)。
我正在尝试了解 Python 的 GIL。我最近有一个任务,我必须比较在多个输入文件上使用不同时间复杂度的不同算法执行的特定任务的执行时间。我 运行 一个 python 脚本来做同样的事情,但我在 macOS 上使用单独的终端 windows 来 运行 相同的 python 脚本用于不同的输入文件。
我还 运行 一个终端 window,一个接一个,每个输入文件。与之前的多个 windows 方法相比,每次执行的 CPU 时间更短,其中每个程序花费两倍的时间,但一次 运行 。 (注意:在以前的方法中有 4 个终端 windows,而 python 脚本只有 运行 一个 a.out 可执行文件,在 macOS 上用 clang 编译并将输出存储在不同的文件中) .
谁能解释为什么 运行并行运行它们会导致每个程序变慢?他们 运行 是在不同的核心上还是 GIL 导致每个程序都比我 运行 在一个终端 window 一次一个程序慢?
每个终端 window 将启动一个新的 python 解释器,每个解释器都有自己的 GIL。差异可能是由于在 OS 级别争用某些资源(磁盘 i/o、内存、cpu 周期)。