如果我要打开 10 个终端窗口,操作系统如何处理?它使用多线程或多处理吗?或者还有其他一些我还不知道的概念?如果我要在所有 10 个上运行 Python 脚本,它们将如何使用 GIL 运行?它们是否会以多处理方式运行,直到 CPU 中的所有核心(在我的例子中为 8 个)都运行 Python,然后切换到并发多线程?另外,我在哪里可以阅读更多相关内容?
答案1
这可能取决于终端应用程序。您可以启动多个xterm
终端,然后每个终端有 1 个进程。对于支持多个选项卡的终端,可以使用多线程或使用系统调用的单线程来实现select
。该系统调用被赋予一组文件描述符,并返回可以读取或写入内容的描述符列表。
无论终端以何种方式实现,您都会拥有与打开的终端一样多的 shell(或其他程序)进程。如果您启动 10 个 Python 脚本,您将拥有 10 个独立进程。每个锁都可能有一个全局解释器锁,但它们是每个进程锁。 (在一个进程中获取锁不会阻止其他进程获取其 GIL)。