最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對python多線程與global變量詳解

 更新時(shí)間:2018年11月09日 11:07:52   作者:hsj_csdn  
今天小編就為大家分享一篇對python多線程與global變量詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧

今天早上起來寫爬蟲,基本框架已經(jīng)搭好,添加多線程爬取功能時(shí),發(fā)現(xiàn)出錯(cuò):

比如在下載文件的url列表中加入200個(gè)url,開啟50個(gè)線程。我的爬蟲…竟然將50個(gè)url爬取并全部命名為0.html,也就是說,最后的下載結(jié)果,是有1個(gè)0.html(重復(fù)的覆蓋了),還有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è)是全局變量g的定義
global g
 
g = 0

后來終于發(fā)現(xiàn)問題:多線程+全局變量是個(gè)危險(xiǎn)的組合,因?yàn)槌绦蛴卸鄠€(gè)線程在同時(shí)執(zhí)行,多個(gè)線程同時(shí)操作全局變量,會(huì)引起混亂。在多線程中操作全局變量,應(yīng)當(dāng)給該操作加鎖。

以下為修改后的代碼:

函數(shù):
 
def downLoad(url,num):
 x = str(num)
 filePath = "E://wgetWeiBao//"+x+".html"
 try:
  wget.download(url,filePath)
  print x+" is downloading..."
 
 except:
  print "error!"
多線程消費(fèi)者_(dá)給操作全局變量的語句加鎖
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變量詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python解析nginx日志文件

    Python解析nginx日志文件

    Web服務(wù)器的各種系統(tǒng)管理工作包括了多Nginx/Apache 日志的統(tǒng)計(jì),python使這個(gè)任務(wù)變得極其簡單,下面我們來詳細(xì)講解下具體的做法,有需要的小伙伴可以參考下。
    2015-05-05
  • Python程序員面試題 你必須提前準(zhǔn)備!(答案及解析)

    Python程序員面試題 你必須提前準(zhǔn)備!(答案及解析)

    這篇文章主要為大家解析了你必須提前準(zhǔn)備的Python程序員面試題答案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python處理字符串的常用函數(shù)實(shí)例總結(jié)

    Python處理字符串的常用函數(shù)實(shí)例總結(jié)

    在數(shù)據(jù)分析中,特別是文本分析中,字符處理需要耗費(fèi)極大的精力,因而了解字符處理對于數(shù)據(jù)分析而言,也是一項(xiàng)很重要的能力,這篇文章主要給大家介紹了關(guān)于Python處理字符串的常用函數(shù),需要的朋友可以參考下
    2021-11-11
  • PyTorch一小時(shí)掌握之a(chǎn)utograd機(jī)制篇

    PyTorch一小時(shí)掌握之a(chǎn)utograd機(jī)制篇

    這篇文章主要介紹了PyTorch一小時(shí)掌握之a(chǎn)utograd機(jī)制篇,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Python基于locals返回作用域字典

    Python基于locals返回作用域字典

    這篇文章主要介紹了Python基于locals返回作用域字典,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Python如何把Spark數(shù)據(jù)寫入ElasticSearch

    Python如何把Spark數(shù)據(jù)寫入ElasticSearch

    這篇文章主要介紹了Python如何把Spark數(shù)據(jù)寫入ElasticSearch,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python查詢Mysql時(shí)返回字典結(jié)構(gòu)的代碼

    Python查詢Mysql時(shí)返回字典結(jié)構(gòu)的代碼

    MySQLdb默認(rèn)查詢結(jié)果都是返回tuple,輸出時(shí)候不是很方便,必須按照0,1這樣讀取,無意中在網(wǎng)上找到簡單的修改方法,就是傳遞一個(gè)cursors.DictCursor就行
    2012-06-06
  • Python?OpenCV實(shí)現(xiàn)人物動(dòng)漫化效果

    Python?OpenCV實(shí)現(xiàn)人物動(dòng)漫化效果

    這篇文章主要介紹了利用Python和OpenCV實(shí)現(xiàn)人物的動(dòng)漫化特效,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python和OpenCV有一定的幫助,需要的可以了解一下
    2022-01-01
  • OpenCV+Python識(shí)別車牌和字符分割的實(shí)現(xiàn)

    OpenCV+Python識(shí)別車牌和字符分割的實(shí)現(xiàn)

    這篇文章主要介紹了OpenCV+Python識(shí)別車牌和字符分割的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 幾款好用的python工具庫(小結(jié))

    幾款好用的python工具庫(小結(jié))

    這篇文章主要介紹了幾款好用的python工具庫(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10

最新評論

盐津县| 宣城市| 阳谷县| 金平| 高雄市| 张家港市| 象州县| 宜良县| 怀集县| 浦城县| 嘉禾县| 鞍山市| 平凉市| 保靖县| 罗田县| 平江县| 晋城| 和林格尔县| 德昌县| 句容市| 图片| 长子县| 邯郸市| 遂溪县| 阜城县| 龙胜| 中卫市| 锦州市| 浦县| 微博| 峨眉山市| 岳阳县| 青河县| 昭平县| 高陵县| 鄂伦春自治旗| 垣曲县| 西畴县| 晋城| 肥东县| 团风县|