美文网首页
Python的解释器是单线程,但不代表开发多线程Python程序

Python的解释器是单线程,但不代表开发多线程Python程序

作者: 欢喜明 | 来源:发表于2018-04-19 16:13 被阅读0次

先看官方描述:

In CPython, the global interpreter lock, or GIL, is a mutex that prevents multiple native threads from executing Python bytecodes at once. This lock is necessary mainly because CPython’s memory management is not thread-safe. (However, since the GIL exists, other features have grown to depend on the guarantees that it enforces.)

看这说明,在CPython中,全局解释器锁:GIL是必需存在,因为CPython的内存管理不是线程安全的。

所以,由于GIL的存在,Python无法利用多处理器的优势,任意时刻只会有一个线程运行在解释器中。也就是大计算量的程序在Python中通过多线程处理并不一定就会变快。

但是,并不是说,Python就不需要多线程编程了。

IO密集型程序可以很好地利用多线程,例如Python开发的客户端程序,如果单线程实现,假如发送一个http请求服务器端需要耗费5s来处理,那么客户端程序发送一个请求,发送完成之后,然后就等着,本机CPU也空闲着,在等着服务器返回数据,串行发送1000个就需要5000s左右;但是开1000个线程,就可以同时发送1000个请求(其实不是真的同时,因为在解释器中同一个时刻只有一个线程在运行,只是,开了1000个线程的话,对应1000个请求,程序串行的执行1000个线程,把请求发送出去,那是非常快的,我们在感官上就觉得是同时),然后就一起等待响应,服务器性能好的话,说不定10s之内就能完成1000个请求。

相关文章

  • Python的解释器是单线程,但不代表开发多线程Python程序

    先看官方描述: In CPython, the global interpreter lock, or GIL, ...

  • Python如何运行程序

    Python的运行 Q:什么是Python解释器 A:Python 解释器是运行Python程序的程序 Q:什么是...

  • 第2章 Python如何运行程序

    什么是Python解释器?Python解释器,就是运行Python程序的那个程序。 什么是源代码?source c...

  • 02-第一个Python程序

    执行Python程序的3种方式 解释器 -- python、python3 交互式 -- ipython 集成开发...

  • Python概念基本理论

    1.1 什么是Python解释器? Python解释器是运行Python的程序 1.2 什么是源代码 ? 源代码...

  • 第二章

    1.什么是Python解释器? 答:Python解释器是运行Python程序的程序。 2.什么是源代码? 答:源代...

  • Python执行方式

    执行 Python 程序的三种方式 1. 解释器 python / python3 Python 的解释器 使用 ...

  • Python集成开发环境介绍

    安装Python解释器、配置环境变量之后,方可开始Python程序的开发。但在实际开发中,往往还会用到代码编辑器,...

  • 0. Python前言

    1. 运行python程序的两种方式 进入python解释器, 交互式执行python命令 利用python解释器...

  • Python_提高

    GIL全局解释器锁 描述Python GIL的概念, 以及它对python多线程的影响?编写⼀个 多线程抓取⽹⻚的...

网友评论

      本文标题:Python的解释器是单线程,但不代表开发多线程Python程序

      本文链接:https://www.haomeiwen.com/subject/vfmwkftx.html