zoukankan      html  css  js  c++  java
  • Cpython中的全局解释器GIL

    Multiprocessing is a package that supports spawning processes using an API similar to the threading module. The multiprocessing package offers both local and remote concurrency,effectively side-stepping the Global Interpreter Lock by using subprocesses instead of threads. Due to this, the multiprocessingmodule allows the programmer to fully leverage multiple processors on a given machine. It runs on both Unix and Windows.

    无论你启多少个线程,你有多少个CPU,Python在执行的时候会在同一时刻只允许一个线程运行。

    由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。

    multiprocessing包是Python中的多进程管理包。与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。该进程可以运行在Python程序内部编写的函数。该Process对象与Thread对象的用法相同,也有start(), run(), join()的方法。此外multiprocessing包中也有Lock/Event/Semaphore/Condition类 (这些对象可以像多线程那样,通过参数传递给各个进程),用以同步进程,其用法与threading包中的同名类一致。所以,multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。

  • 相关阅读:
    ArcObjects SDK(AE)10.1在vs2012安装的方法(亲测,并未成功,尝试需谨慎)
    PTA 求链式表的表长
    PTA 输出数组元素
    PTA 找出不是两个数组共有的元素
    PTA 将数组中的数逆序存放
    PTA 利用指针找最大值
    PTA 有序数组的插入
    PTA 冒泡排序
    PTA 报数
    PTA 数组循环右移
  • 原文地址:https://www.cnblogs.com/zhiliang9408/p/10703288.html
Copyright © 2011-2022 走看看