怎么用python3爬虫中的GIL修改多线程-创新互联
小编给大家分享一下怎么用python3爬虫中的GIL修改多线程,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
创新互联是专业的绵竹网站建设公司,绵竹接单;提供网站建设、网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行绵竹网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!我们都知道,比方我有一个4核的CPU,那么这样一来,在单位时间内每个核只能跑一个线程,然后时间片轮转切换。但是Python不一样,它不管你有几个核,单位时间多个核只能跑一个线程,然后时间片轮转。看起来很不可思议?但是这就是GIL搞的鬼。任何Python线程执行前,必须先获得GIL锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。这个GIL全局锁实际上把所有线程的执行代码都给上了锁,所以,多线程在Python中只能交替执行,即使100个线程跑在100核CPU上,也只能用到1个核。通常我们用的解释器是官方实现的CPython,要真正利用多核,除非重写一个不带GIL的解释器。我们不妨做个试验:
#coding=utf-8 from multiprocessing import Pool from threading import Thread from multiprocessing import Process def loop(): while True: pass if __name__ == '__main__': for i in range(3): t = Thread(target=loop) t.start() while True: pass
我的电脑是4核,所以我开了4个线程,看一下CPU资源占有率:

我们发现CPU利用率并没有占满,大致相当于单核水平。
而如果我们变成进程呢?
我们改一下代码:
#coding=utf-8 from multiprocessing import Pool from threading import Thread from multiprocessing import Process def loop(): while True: pass if __name__ == '__main__': for i in range(3): t = Process(target=loop) t.start() while True: Pass

结果直接飙到了100%,说明进程是可以利用多核的!
如果小伙伴们运行的结果也是cpu百分之百,就说明本次的修改成功了。为了更直观的让大家看出前后区别,小编特意准备了前后的对比,说明GIL修改多线程的方法是可行的!
看完了这篇文章,相信你对怎么用python3爬虫中的GIL修改多线程有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
文章名称:怎么用python3爬虫中的GIL修改多线程-创新互联
转载源于:http://www.pengzhouwz.cn/article/cdpggc.html
其他资讯
- 利用JavaScript实现一个点击图片切换背景功能-创新互联
- 如何在.netcore中使用HttpWebRequest发送并发请求-创新互联
- 云安全日报200924:Linux内核发现高系统特权升级漏洞,需要尽快升级
- 国内电商网站跳出率是多少,如何降低电子商务网站和在线旅游资讯网站的跳出率
- SqlServer系列笔记——触发器
- oracle异常怎么捕获 oracle触发器异常捕获处理
- go语言写xml文件 go语言代码文件后缀
- c语言的库函数是什么 c语言中的库函数有哪些
- 挑战linux:搭建专属的开发平台(搭建linux平台)
- 建站租用香港站群高防服务器的优势有哪些?(香港服务器建站好处有哪些)


咨询
建站咨询
