/douban_crawl

豆瓣电影爬虫,协程代码实战

Primary LanguageJupyter Notebook

douban_crawl

豆瓣电影爬虫,协程代码实战

为什么多线程每次只能有一个线程执行?

前面我说过,同一时刻,Python 主程序只允许有一个线程执行,所以 Python 的并发,是通过多线程的切换完成的。你可能会疑惑这到底是为什么呢?这里我简单提一下全局解释器锁的概念,具体内容后面会讲到。事实上,Python 的解释器并不是线程安全的,为了解决由此带来的 race condition 等问题,Python 便引入了全局解释器锁,也就是同一时刻,只允许一个线程执行。当然,在执行 I/O 操作时,如果一个线程被 block 了,全局解释器锁便会被释放,从而让另一个线程能够继续执行。