开发者社区> 问答> 正文

在多线程环境中,Python 虚拟机按有几种执行方式

在多线程环境中,Python 虚拟机按有几种执行方式

展开
收起
珍宝珠 2019-11-01 14:55:19 3293 0
2 条回答
写回答
取消 提交回答
  • pyton多线程严格来说并不是真正的多线程,而是基于GIL全局解释锁进行上下文切换。

    线程1,GIL锁定,执行100k 解锁线程1 切到到线程2.GIL锁定,执行100k

    就是重复上边的操作。

    python的话建议用协程,gevent第三方不错。协程是基于程序级的代码级切换,本身有自己的寄存器。进行上下文切换。 本身只占一个线程。但是只能利用一个cpu核。如果要高性能历用。一般会采用多进程+协程。

    2019-11-04 17:50:39
    赞同 展开评论 打赏
    1. 设置GIL
    2. 切换到一个线程去运行
    3. 运行: a. 指定数量的字节码指令,或者

      b. 线程主动让出控制(可以调用time.sleep(0))

    4. 把线程设置为睡眠状态
    5. 解锁GIL
    6. 再次重复以上所有步骤
    2019-11-01 15:24:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载