Python如何实现多进程编程基础教程?

2026-05-16 14:400阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2919个文字,预计阅读时间需要12分钟。

Python如何实现多进程编程基础教程?

前言:在网上看到一篇帖子,讲述的是为什么在Python中推荐使用多进程而不是多线程?的内容,具体细节待详细了解。背景是这样的:

1. GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁)。

前言

在网上看到一篇帖子,讲的是 "为什么在Python里推荐使用多进程而不是多线程?",大致内容待细细道来,背景是这样的,

1. GIL是什么?

GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。

2. 每个CPU在同一时间只能执行一个线程

在单核CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

3、在Python多线程下,每个线程的执行方式:

  • 获取GIL
  • 执行代码直到sleep或者是python虚拟机将其挂起。
  • 释放GIL
  • 可见,某个线程想要执行,必须先拿到GIL,我们可以把GIL看作是“通行证”,并且在一个python进程中,GIL只有一个。拿不到通行证的线程,就不允许进入CPU执行。

    在Python2.x里,GIL的释放逻辑是当前线程遇见IO操作或者ticks计数达到100(ticks可以看作是Python自身的一个计数器,专门做用于GIL,每次释放后归零,这个计数可以通过 sys.setcheckinterval 来调整),进行释放。
    而每次释放GIL锁,线程进行锁竞争、切换线程,会消耗资源。

    阅读全文

    本文共计2919个文字,预计阅读时间需要12分钟。

    Python如何实现多进程编程基础教程?

    前言:在网上看到一篇帖子,讲述的是为什么在Python中推荐使用多进程而不是多线程?的内容,具体细节待详细了解。背景是这样的:

    1. GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁)。

    前言

    在网上看到一篇帖子,讲的是 "为什么在Python里推荐使用多进程而不是多线程?",大致内容待细细道来,背景是这样的,

    1. GIL是什么?

    GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定。

    2. 每个CPU在同一时间只能执行一个线程

    在单核CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念。但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔内发生。

    3、在Python多线程下,每个线程的执行方式:

  • 获取GIL
  • 执行代码直到sleep或者是python虚拟机将其挂起。
  • 释放GIL
  • 可见,某个线程想要执行,必须先拿到GIL,我们可以把GIL看作是“通行证”,并且在一个python进程中,GIL只有一个。拿不到通行证的线程,就不允许进入CPU执行。

    在Python2.x里,GIL的释放逻辑是当前线程遇见IO操作或者ticks计数达到100(ticks可以看作是Python自身的一个计数器,专门做用于GIL,每次释放后归零,这个计数可以通过 sys.setcheckinterval 来调整),进行释放。
    而每次释放GIL锁,线程进行锁竞争、切换线程,会消耗资源。

    阅读全文