如果CPU一次可以执行一个进程(重量轻),我们为什么要责怪GIL?

时间:2016-01-12 09:52:31

标签: python multithreading process operating-system

理论值:

  1. 单个CPU一次可以执行一个进程。线程也是轻量级的过程。这意味着CPU可以一次执行一个线程。

  2. 如上所述here

      

    CPython实现细节:在CPython中,由于Global Interpreter Lock,只有一个线程可以同时执行Python代码(即使某些面向性能的库可能会克服此限制)。如果您希望应用程序更好地利用多核机器的计算资源,建议您使用多处理。但是,如果要同时运行多个I / O绑定任务,则线程仍然是一个合适的模型。

  3. 问题:

    1. 如果一个线程可以在CPU级别执行一次,我们为什么要责怪python的全局解释器锁?
    2. Python线程是内核还是用户级线程?
    3. I / O绑定任务仍然涉及CPU,对吗? I / O如何影响线程,它真的会影响吗?
    4. 我对(第一个问题)的理解:

      单CPU :全局解释器锁无关紧要。

      多核CPU :在多核CPU中,由于全局解释器锁定,我们将无法利用线程。

        

      这是否意味着我们可以在多核CPU中实现并行处理?

      我对第一个问题的理解是否正确?其他问题的答案也是什么?

      P.S:在阅读了上述问题之后,您必须了解我对(多)线程/(多)处理/多任务处理/ OS与Python的理解是否正确连接。我刚问了这个问题,以便我可以连接点。如果您能提供任何可以使理解正确的链接/博客/书籍,我们将非常感激。

0 个答案:

没有答案