解析python多线程与global变量

  • 更新时间:2020-02-10 19:32:09
  • 编辑:易波涛
给大家整理了Python相关的编程文章,网友蔡明凝根据主题投稿了本篇教程内容,涉及到python、多线程、global、对python多线程与global变量详解相关内容,已被579网友关注,涉猎到的知识点内容可以在下方电子书获得。

参考资料

正文内容

对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多线程ThreadAPI详细介绍

    为网友们分享了关于Java的教程,这篇文章主要介绍了Java多线程ThreadAPI详细介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2022-10-26

  • Python金融实战

    Python金融实战

    本书是Python金融实战类指南,指导金融大数据分析过程,从Python的安装、基础语法,再到一系列简单的编程示例,序渐进地引导读者学习Python

    大小:33 MBPython电子书

  • 精通Python网络爬虫:核心技术、框架与项目实战

    精通Python网络爬虫:核心技术、框架与项目实战

    大小:13267 MB MPython爬虫

  • Python编程无师自通

    Python编程无师自通

    Python编程无师自通 专业程序员的养成 零基础自学Python3入门教程 Python基础教程

    大小:122.4 MBPython编程电子书

  • Python黑客攻防入门

    Python黑客攻防入门

    本书讲述了Python黑客攻防的基础知识、各种黑客攻击技术、黑客攻击学习方法,介绍各种黑客攻击技术、计算机基础知识、应用程序黑客攻击、Web黑客攻击、网络黑客攻击等

    大小:63.1 MB黑客技术电子书

  • Python数据分析基础

    Python数据分析基础

    《Python数据分析基础》零编程经验也可学会用Python语言进行数据分析,python基础知识介绍、csv文件和Excel文件读写、数据库操作等。

    大小:11.3MPython数据分析电子书

  • NumPy攻略:Python科学计算与数据分析

    NumPy攻略:Python科学计算与数据分析

    《NumPy攻略:Python科学计算与数据分析》详细介绍了70多种多样学习培训Python开源系统课堂教学库NumPy的趣味方式,教會用户怎样安裝和应用NumPy,并掌握别的某些有关定义,从而把握NumPyarrays以

    大小:33.6 MBNumPy电子书

  • Python高级编程(第2版)

    Python高级编程(第2版)

    Python作为一种高-级程序设计语言,本书于Python 3.5版本进行讲解,深度揭示了Python编程的高级技巧,适合想要进一步提高自身Python编程技能的读者阅读,也适合对Python编程感兴趣的读者参考学习

    大小:76.8 MBPython电子书

  • Python程序设计开发宝典

    Python程序设计开发宝典

    本书深入剖析Python 3.5.x、Python 3.6.x及更新版本的内置对象和标准库对象高级用法,150个案例源代码和超过1000个演示性代码片段,可以作为Python程序设计教材

    大小:42.8 MBPython电子书

用户留言