麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 編程 > Python > 正文

對(duì)python多線程與global變量詳解

2020-02-15 23:36:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

比如在下載文件的url列表中加入200個(gè)url,開(kāi)啟50個(gè)線程。我的爬蟲(chóng)…竟然將50個(gè)url爬取并全部命名為0.html,也就是說(shuō),最后的下載結(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

后來(lái)終于發(fā)現(xiàn)問(wè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á)給操作全局變量的語(yǔ)句加鎖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)

大功告成!

以上這篇對(duì)python多線程與global變量詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林站長(zhǎng)站。

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中文字幕偷拍 | 91久久国产综合久久91精品网站 | 久久国产精品二区 | 欧美三级美国一级 | 成人在线精品视频 | 国产在线观看91精品 | 爽成人777777婷婷 | 久草资源在线观看 | 精品一区二区三区免费毛片爱 | 久草在线新视觉 | 国产精品爱久久久久久久 | 在线播放av片 | 黄色一级片免费在线观看 | 久久精品国产99久久久古代 | 一级黄色淫片 | 久久国产精品99久久人人澡 | 国产精品午夜小视频观看 | 性欧美xxxx免费岛国不卡电影 | 精品一区二区久久久久 | 久久99精品久久久久久小说 | 欧美国产一区二区三区 | 久久伊人精品视频 | 国产亚洲精品成人 | 成年免费看 | 成人免费网站在线观看视频 | 国产精品免费视频观看 | 久章草在线观看 | 精品一区免费 | 一区二区三区日韩精品 | 久久免费视频3 | 9191色| 黄色免费av网站 | 国产外围在线 | 999久久久国产999久久久 | 日本网站在线播放 | 九九热精品视频在线 | 欧美成人午夜一区二区三区 | 成人国产精品色哟哟 | 久久爽久久爽久久av东京爽 | 亚洲精品午夜国产va久久成人 | 精品国产一区二区三区四区在线 |