【Python网络蜘蛛】基础 - 多线程和多进程的基本原理

文章目录

  • 多线程和多进程的基本原理
    • 多线程的含义
    • 并发和并行
    • Python中的多线程和多进程

多线程和多进程的基本原理


在编写爬虫程序的时候,为了提高爬取效率,我们可能会同时运行多个爬虫任务,其中同样涉及多进程和多线程。

多线程的含义

先了解一下进程:

进程可以理解为一个可以独立运行的程序单位。例如打开一个浏览器.就开启了一个浏览器进程。在一个进程中,可以同时处理很多事情,例如看视频、听音乐、放动画,这些任务可以同时运行,互不干扰。其实一个任务就对应一个线程

进程是线程的集合,线程是操作系统进行运算调度的最小单位,是进程中的最小运行单元。

并发和并行

  • 并发:指多个线程对应的多条指令被快速轮换地执行。
  • 并行:指同一时刻有多条指令在多个处理器上同时执行,这意味着并行必须依赖多个处理器。

Python中的多线程和多进程

Python中 GIL的限制导致不论是在单核还是多核条件下,同一时刻都只能运行一个线程,这使得Python多线程无法发挥多核并行的优势。

GIL全称为Global Interpreter Lock,意思是全局解释器锁,具议计之初定山丁对效据安全的考虑在 Python多线程下,每个线程的执行方式分如下三步:

  • 获取GIL。
  • 执行对应线程的代码。
  • 释放GIL。

某个线程想要执行,必须先拿到GIL,并且在Python进程中,GIL只有一个。线程拿不到GIL就不允许执行。

对于多进程来说,每个进程都有属于自己GIL,所以在多核处理器下,多进程的运行是不会受GIL影响的。即多进程能更好的发挥多核优势。

注意:由于进程是系统进行资源分配和调度的一个独立单位,所以各进程之间的数据是无法共享的,如多个进程无法共享一个全局变量,进程之间的数据共享需要由单独的机制来实现。

你可能感兴趣的:(Python网络爬虫开发实战,python,开发语言,多进程和多线程)