[Python 爬虫这样学,一定是大拇指拉!] DAY25 - 实战演练:关於多执行绪

多执行绪

介绍什麽是多执行绪(multithreading)前,先来简单讲一下什麽是执行绪。

在作业系统中会有 Program / Process / Thread 这三种东西。

  • Program:最简单的例子就是我们那些尚未被执行的爬虫程序。
  • Process:被执行之後的爬虫程序就会产生一个 Process。
  • Thread:则是负责 Process 里其中一项工作,而 Process 之中可拥有数个 Thread。也就是说 Process 是 Thread 的容器,Thread 则是执行动作的单位。对一个单核心单执行绪的 CPU 来说,在运作程序时,一次只会执行一个 Process 里的一个 Thread。像现在多核心多执行绪的 CPU,就可以一次执行好几个 Process,并同时运行好几个 Thread。

好的,对 Thread 有基本理解後,来介绍什麽是多执行绪(multithreading)吧!

引用自维基百科

多执行绪(英语:multithreading),是指从软件或者硬体上实现多个执行绪并行执行的技术。具有多执行绪能力的电脑因有硬体支援而能够在同一时间执行多於一个执行绪,进而提升整体处理效能。具有这种能力的系统包括对称多处理机、多核心处理器以及晶片级多处理(Chip-level multithreading)或同时多执行绪(Simultaneous multithreading)处理器。

软件多执行绪。即便处理器只能执行一个执行绪,作业系统也可以通过快速的在不同执行绪之间进行切换,由於时间间隔很小,来给使用者造成一种多个执行绪同时执行的假象。这样的程序执行机制被称为软件多执行绪。

维基百科讲得还蛮清楚的。但不知道大家还记不记得 Python 的特性,Python 就是一个软件多执行绪的程序语言喔!
Python 特性 - 复习传送门

总之呢,不管是软件或者硬体上的多执行绪,都是为了让 CPU 能更有效率地被使用。
以上就是执行绪与多执行绪简单介绍,下篇将讲解怎麽将多执行绪的概念套用在爬虫程序上,以及为何要使用多执行绪的原因。

本篇章参考资料

[1] Wiki - 多执行绪


<<:  DAY28: 光速了解与操作NVM

>>:  [Day 29] 第二主餐 pt.5-django也能写前端,templates简易介绍

来做一个简单的 To-do List 吧! (上)

前言 今天来尝试做个简单版的 To-do List,让自己对於 To-do List 的实作有一个粗...

Day 11 - Algebraic Data Types

yo, what's up? Product Type Product types 允许同时存在两种...

【Day 16】jQuery事件

jQuery事件 说明:是为响应 HTML 页面中的事件而订制的。 何谓事件(Events)? 网页...

[Flutter ] Free fake API 为资料库,以 FutureBuilder + http 抓取

程序版本: Flutter 2.2.1 使用JSONPlaceholder为 Free fake A...

[DAY 1] 前言

大家好,我是Billy,身为资讯人,在对一项技术深入研究才会发现,自己不了解的更多,所以尝试以参加铁...