当前位置: 首页 > news >正文

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

文章目录

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

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


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

多线程的含义

先了解一下进程:

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

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

并发和并行

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

Python中的多线程和多进程

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

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

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

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

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

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

http://www.lryc.cn/news/55837.html

相关文章:

  • linux C/C++文件路径操作
  • Baumer工业相机堡盟相机如何使用BGAPI SDK和Opencv联动实现图像转换成视频(C#)
  • Redis常用命令以及如何在Java中操作Redis
  • ASEMI代理AD7980BRMZRL7原装ADI(亚德诺)车规级AD7980BRMZRL7
  • leetcode141:环形链表
  • lattice diamond软件使用
  • scala泛型
  • 程序员与ChatGPT的日常问答
  • 如何创建高效的Prompt和ChatGPT等大语言模型AI对话
  • 043:cesium加载Bing地图(多种形式)
  • vscode代码片段生成
  • 数据规整:聚合、合并和重塑
  • 开心档之C++ 信号处理
  • ChatGPT惨遭围剿?多国封杀、近万人联名抵制……
  • SpringBoot监听器
  • 【网络安全】SQL注入--报错注入
  • APP隐私整改建议
  • MySQL数据模型 and 通用语法 and 分类
  • 一款识别域名是否使用cdn的工具cdnChecker
  • Ant Design Vue的汉化
  • spring cloud中实现接口广播请求到服务提供者
  • 电机PID参数调节笔记
  • 【深度学习】基于华为MindSpore的手写体图像识别实验
  • Linux:内核调试之内核魔术键sysrq
  • Python import导包快速入门
  • ChatGPT这么火,我们能怎么办?
  • HashMap底层原理
  • 卡顿优化小结
  • springboot前端ajax 04 关于后台传的时间和状态在前端的转换
  • 解决Windows微信和 PowerToys 的键盘管理器冲突