扫码关注官方订阅号
我向别人讨教,在scrapy中使用多线程提高抓取效率的问题,有人回复我说,这涉及Python全局解释器锁(GIL)的问题,我搜索了一下,发现GIL限制Python同一时间只能有一个线程运行。如果是这样的话,那threading库的存在是怎么回事?那多线程爬虫到底存在不存在?
ringa_lee
确切来说:GIL 限制 Python 同一时间只能有一个线程持有 GIL。
通常在进入一些不需要 Python 解释器的 C 代码之前,库程序会/应显式释放 GIL:
cPy_BEGIN_ALLOW_THREADS // ... Do some blocking I/O operation ... Py_END_ALLOW_THREADS
c
Py_BEGIN_ALLOW_THREADS // ... Do some blocking I/O operation ... Py_END_ALLOW_THREADS
因此回答问题:
因为爬虫程序90%的时间是在等啊
明显不是,你好好看看官方的文档
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
确切来说:GIL 限制 Python 同一时间只能有一个线程持有 GIL。
通常在进入一些不需要 Python 解释器的 C 代码之前,库程序会/应显式释放 GIL:
因此回答问题:
因为爬虫程序90%的时间是在等啊
明显不是,你好好看看官方的文档