浅析Python多任务

进程与线程

  • 进程是计算机中数据分配、资源调度的最小单元,一个程序可以包含多个进程,至少也会有一个主进程。一个进程内的所有线程共享该进程的资源。

  • 线程是计算机中的最小执行单元,一个进程可以包含多个线程,但是至少会有一个主线程,由CPU调度完成具体的数据运算。写的程序如果没有手动开启多线程,则全部都是单线程程序。

并行与并发

  • 并行指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的,是指两个或者多个事件在同一时刻发生。并行的关键是你有同时处理多个任务的能力。 在Python中,多进程才是并行。

  • 并发指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行,是指两个或多个事件在同一时间间隔发生。并发的关键是你有处理多个任务的能力,但不一定要同时。
    在Python中,多线程指的便是并发。

GIL锁

GIL即CPython的全局解释器锁(Global Interpreter Lock)。首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念,JPython就没有GIL。

解决多线程之间数据完整性和状态同步,即数据安全,最简单方法就是加锁。于是CPython才出现了GIL这把超级大锁。因为大量Python库代码的开发者已经重度依赖GIL,所以说这把锁已经变成了Python的一个比较严重的历史遗留问题。正因为这把锁,导致Python几乎等于一个单线程的程序。

GIL会阻止多个线程运行同一代码,确保由所有进程共享的内存不会中断,但这样做存在性能瓶颈。

I\O密集型(文件处理、网络爬虫)代码开启多线程则是一个并发执行的过程,由于会进行I/O等待,并发也就会充分利用等待时间,于是可以做到提高效率。

多线程遇到CPU密集型(循环、计算)代码时,单线程会比多线程的快。因为计算量太大,会触发GIL的释放与在竞争,多个线程间来回切换也会过度损耗资源。

因为GIL的存在,只有IO密集型场景下的多线程会得到较好的性能,而在CPU密集型(计算密集型)或者高并发场景下,推荐使用多进程效率会更快。毕竟每个进程有各自独立的GIL,互不干扰,即真正意义上的并行执行。但多进程占用的资源更多,所以仍然需要酌情考虑。

更多关于Python的GIL锁的内容可参考下列链接的文章:

https://www.cnblogs.com/zipxzf/p/11621630.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355