亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

對python多線程與global變量詳解

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

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

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

后來終于發(fā)現(xiàn)問題:多線程+全局變量是個危險的組合,因為程序有多個線程在同時執(zhí)行,多個線程同時操作全局變量,會引起混亂。在多線程中操作全局變量,應(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!"
多線程消費者_(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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python爬蟲超時的處理的實例

    python爬蟲超時的處理的實例

    今天小編就為大家分享一篇python爬蟲超時的處理的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python第三方包之DingDingBot釘釘機(jī)器人

    Python第三方包之DingDingBot釘釘機(jī)器人

    這篇文章主要介紹了Python第三方包之DingDingBot釘釘機(jī)器人,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • django haystack實現(xiàn)全文檢索的示例代碼

    django haystack實現(xiàn)全文檢索的示例代碼

    這篇文章主要介紹了django haystack實現(xiàn)全文檢索的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Pandas實現(xiàn)Dataframe的合并

    Pandas實現(xiàn)Dataframe的合并

    我們知道,在使用pandas處理數(shù)據(jù)的時候,往往會需要合并兩個或者多個DataFrame的操作,那么本文就來介紹一下Pandas實現(xiàn)Dataframe的合并,感興趣的可以了解一下
    2021-06-06
  • Pandas庫中dataframe.corr()函數(shù)的使用

    Pandas庫中dataframe.corr()函數(shù)的使用

    dataframe.corr()是Pandas庫中的一個函數(shù),用于計算DataFrame中各列之間的相關(guān)系數(shù),本文主要介紹了Pandas庫中dataframe.corr()函數(shù)的使用,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 詳解Python 關(guān)聯(lián)規(guī)則分析

    詳解Python 關(guān)聯(lián)規(guī)則分析

    這篇文章主要介紹了Python 關(guān)聯(lián)規(guī)則分析的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python中刪除文件的幾種方法實例

    Python中刪除文件的幾種方法實例

    這篇文章主要給大家介紹了關(guān)于Python中刪除文件的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python利用PaddleOCR制作個搜題小工具

    Python利用PaddleOCR制作個搜題小工具

    PaddleOCR是一個基于百度飛槳的OCR工具庫,單模型支持中英文數(shù)字組合識別、豎排文本識別、長文本識別。本文將利用PaddleOCR開發(fā)一個搜題小工具,感興趣的可以了解一下
    2022-06-06
  • 基于python歷史天氣采集的分析

    基于python歷史天氣采集的分析

    今天小編就為大家分享一篇基于python歷史天氣采集的分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • 如何在Pycharm中制作自己的爬蟲代碼模板

    如何在Pycharm中制作自己的爬蟲代碼模板

    當(dāng)有很多個個網(wǎng)站想要爬時,每個爬蟲的代碼不一樣,但有某種聯(lián)系,這個時候可以抽出一部分通用的代碼制成模板,減少代碼工作量。本文將具體介紹如何實現(xiàn)這一模板,需要的可以參考一下
    2021-12-12

最新評論