解析python多线程与global变量
- 更新时间:2020-02-10 19:32:09
- 编辑:易波涛
参考资料
- 《Python统计分析》配套彩图 配套资源 / 4.04 MB / [奥地利]托马斯·哈斯尔万特Thomas 推荐度:
- Python数据分析入门:从数据获取到可视化 PDF 电子书 / 5.4 MB / 沈祥壮 推荐度:
- 《Python编程初学者指南》配套资源 配套资源 / 15.8 MB / [美]道森(Michael Dawson 推荐度:
- Python Web开发实战 PDF 电子书 / 72.7 MB / 董伟明 推荐度:
- Python程序设计 PDF 电子书 / 17.9 MB / 约翰·策勒 推荐度:
正文内容
对python多线程与global变量详解
今天早上起来写爬虫,基本框架已经搭好,添加多线程爬取功能时,发现出错:
比如在下载文件的url列表中加入200个url,开启50个线程。我的爬虫…竟然将50个url爬取并全部命名为0.html,也就是说,最后的下载结果,是有1个0.html(重复的覆盖了),还有1-150。下面是我的代码:
x = str(theguardian_globle.g) #x为给下载的文件命的名 filePath = "E://wgetWeiBao//"+x+".html" try: wget.download(url,filePath) theguardian_globle.g+=1 print x+" is downloading..." except: print "error!"
#这个是全局变量g的定义 global g g = 0
后来终于发现问题:多线程+全局变量是个危险的组合,因为程序有多个线程在同时执行,多个线程同时操作全局变量,会引起混乱。在多线程中操作全局变量,应当给该操作加锁。
以下为修改后的代码:
函数: def downLoad(url,num): x = str(num) filePath = "E://wgetWeiBao//"+x+".html" try: wget.download(url,filePath) print x+" is downloading..." except: print "error!"
多线程消费者_给操作全局变量的语句加锁 class Cosumer(threading.Thread): def run(self): print('%s:started' % threading.current_thread()) while True: global gCondition gCondition.acquire() while q.empty()==True: gCondition.wait() url = q.get() num = theguardian_globle.g theguardian_globle.g+=1 gCondition.release() downLoad(url,num)
大功告成!
以上这篇对python多线程与global变量详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。
Python相关教程
-
Python中实现变量赋值传递时的引用和拷贝方法
下面小编就为大家分享一篇Python中实现变量赋值传递时的引用和拷贝方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
发布时间:2019-08-26
-
Java多线程ThreadAPI详细介绍
为网友们分享了关于Java的教程,这篇文章主要介绍了Java多线程ThreadAPI详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
发布时间:2022-10-26
-
Python金融实战
本书是Python金融实战类指南,指导金融大数据分析过程,从Python的安装、基础语法,再到一系列简单的编程示例,序渐进地引导读者学习Python
大小:33 MBPython电子书
-
精通Python网络爬虫:核心技术、框架与项目实战
大小:13267 MB MPython爬虫
-
Python编程无师自通
Python编程无师自通 专业程序员的养成 零基础自学Python3入门教程 Python基础教程
大小:122.4 MBPython编程电子书
-
Python黑客攻防入门
本书讲述了Python黑客攻防的基础知识、各种黑客攻击技术、黑客攻击学习方法,介绍各种黑客攻击技术、计算机基础知识、应用程序黑客攻击、Web黑客攻击、网络黑客攻击等
大小:63.1 MB黑客技术电子书
-
Python数据分析基础
《Python数据分析基础》零编程经验也可学会用Python语言进行数据分析,python基础知识介绍、csv文件和Excel文件读写、数据库操作等。
大小:11.3MPython数据分析电子书
-
NumPy攻略:Python科学计算与数据分析
《NumPy攻略:Python科学计算与数据分析》详细介绍了70多种多样学习培训Python开源系统课堂教学库NumPy的趣味方式,教會用户怎样安裝和应用NumPy,并掌握别的某些有关定义,从而把握NumPyarrays以
大小:33.6 MBNumPy电子书
-
Python高级编程(第2版)
Python作为一种高-级程序设计语言,本书于Python 3.5版本进行讲解,深度揭示了Python编程的高级技巧,适合想要进一步提高自身Python编程技能的读者阅读,也适合对Python编程感兴趣的读者参考学习
大小:76.8 MBPython电子书
-
Python程序设计开发宝典
本书深入剖析Python 3.5.x、Python 3.6.x及更新版本的内置对象和标准库对象高级用法,150个案例源代码和超过1000个演示性代码片段,可以作为Python程序设计教材
大小:42.8 MBPython电子书