2015-06-01 76 views
-1

我寫了這個簡單的腳本來檢查一組比特幣地址是否有交易。不過,我認爲它的運行速度非常緩慢,因爲它每秒處理2次或更少。該文件有超過60K的地址,所以...這將永遠持續下去!運行速度很慢的簡單腳本

那好嗎?

import urllib2 

f = open('bc', 'r') 
output = open('output', 'w') 

n = 1 
for bc in f: 
    url = "https://blockchain.info/address/" + bc 
    aux = urllib2.urlopen(url).read()  
    print n 
    if int(aux[aux.find("<td id=\"n_transactions\">") + 24]) > 0: 
     text = str(n) + ' -- ' + bc 
     output.write(text) 
    n = n + 1 

output.close() 
f.close() 
+2

是的,這是完全沒問題的。由於您通過互聯網提出請求,很多事情都是在速度問題上發揮作用的。首先將是網絡連接速度。我認爲這是其中的原因 – Alfie

+0

30k秒..〜8.33小時..如果這是獲取該數據的唯一方法,請考慮將其作爲cron腳本運行,並將數據緩存在本地數據庫中... – Henrik

+0

或者只是如果它是一次性的事情,它會在一夜之間運行。 8.33小時是一個良好的夜間休息。 :) – Kilenaitor

回答

3

你在文件中打開一個網址爲每個實例都...這將需要時間來加載請求,執行查找,然後寫入文件。您正在加載一個網頁60,000次......這需要一段時間。

不一定是腳本錯誤,它也是你的連接,網站的速度等等你處理數據的能力很多變量。

0

我沒有看到腳本的任何問題。每個頁面加載操作都會影響輸出渲染時間。

也許你爲什麼不考慮某種庫來執行此操作。

看看Python的PANDAS - pandas.pydata.org可以幫助你。 PANDAS帶來的最大好處是可以非常有效地合併多個文件並對其進行操作。通過這種方式,您可以減少頁面執行,從而進一步提高腳本的速度。