威宁住房和城乡建设局网站,南开天津网站建设,互联网产品运营是做什么的,网站设计方案公司文章目录多线程和多进程的基本原理多线程的含义并发和并行Python中的多线程和多进程多线程和多进程的基本原理 在编写爬虫程序的时候#xff0c;为了提高爬取效率#xff0c;我们可能会同时运行多个爬虫任务#xff0c;其中同样涉及多进程和多线程。
多线程的含义
先了解一…
文章目录多线程和多进程的基本原理多线程的含义并发和并行Python中的多线程和多进程多线程和多进程的基本原理 在编写爬虫程序的时候为了提高爬取效率我们可能会同时运行多个爬虫任务其中同样涉及多进程和多线程。
多线程的含义
先了解一下进程
进程可以理解为一个可以独立运行的程序单位。例如打开一个浏览器.就开启了一个浏览器进程。在一个进程中可以同时处理很多事情例如看视频、听音乐、放动画这些任务可以同时运行互不干扰。其实一个任务就对应一个线程。
进程是线程的集合线程是操作系统进行运算调度的最小单位是进程中的最小运行单元。
并发和并行
并发指多个线程对应的多条指令被快速轮换地执行。并行指同一时刻有多条指令在多个处理器上同时执行这意味着并行必须依赖多个处理器。
Python中的多线程和多进程
Python中 GIL的限制导致不论是在单核还是多核条件下同一时刻都只能运行一个线程这使得Python多线程无法发挥多核并行的优势。
GIL全称为Global Interpreter Lock意思是全局解释器锁具议计之初定山丁对效据安全的考虑在 Python多线程下,每个线程的执行方式分如下三步
获取GIL。执行对应线程的代码。释放GIL。
某个线程想要执行必须先拿到GIL并且在Python进程中GIL只有一个。线程拿不到GIL就不允许执行。
对于多进程来说每个进程都有属于自己GIL所以在多核处理器下多进程的运行是不会受GIL影响的。即多进程能更好的发挥多核优势。
注意由于进程是系统进行资源分配和调度的一个独立单位所以各进程之间的数据是无法共享的如多个进程无法共享一个全局变量进程之间的数据共享需要由单独的机制来实现。