只是想學習,我「米不知道是否多將加快 了這個for循環,..嘗試比較 alexa_white_list(1,000,000線)和 dnsMISP(最多可以得到16萬行)多重加快for循環
代碼檢查dnsMISP每一行,並在alexa_white_list。 尋找它,如果它不看它,它增加了它的黑名單。
沒有mp_handler函數的代碼工作正常,但它需要 各地40- 45分鐘。爲了簡潔,我省略了所有其他進口和功能它可以下拉並解壓縮alexa白名單。
下面給我下面的錯誤 - 文件 「./vetdns.py」,線路128,在mp_handler p.map(dns_check,dnsMISP,alexa_white_list) NameError:全局名稱 'dnsMISP' 沒有定義
from multiprocessing import Pool
def dns_check():
awl = []
blacklist = []
ctr = 0
dnsMISP = open(INPUT_FILE,"r")
dns_misp_lines = dnsMISP.readlines()
dnsMISP.close()
alexa_white_list = open(outname, 'r')
alexa_white_list_lines = alexa_white_list.readlines()
alexa_white_list.close()
print "converting awl to proper format"
for line in alexa_white_list_lines:
awl.append(".".join(line.split(".")[-2:]).strip())
print "done"
for host in dns_misp_lines:
host = host.strip()
host = ".".join(host.split(".")[-2:])
if not host in awl:
blacklist.append(host)
file_out = open(FULL_FILENAME,"w")
file_out.write("\n".join(blacklist))
file_out.close()
def mp_handler():
p = Pool(2)
p.map(dns_check,dnsMISP,alexa_white_list)
if __name__ =='__main__':
mp_handler()
如果我把它標記爲全局等,我仍然得到錯誤。我會很感激任何 的建議!
多重處理可能無法幫助您,但將這些列表更改爲集將大大加快您的會員檢查 – IanAuld
「Pool」。map'採用回調函數和迭代器作爲參數。你顯然沒有閱讀'multiprocessing'文檔,因爲你寫的東西沒有意義。哎呀,你傳遞了你從來沒有定義的參數,這似乎表明了一個基本的理解Python的失敗。 – ShadowRanger