[英]Python, instead of a list of 40 million consecutive numbers how would I make a 2-d list of 40, size 1 million, consecutive number lists?
我目前正在研究MapReduce算法,我需要更好地構建我的數據源。 該程序用於給出在哈希算法中使用的隨機數列表,以找到“好”(低值)哈希值; 與比特幣非常相似。 現在我制作一個包含4000萬個連續數字(nonce)的列表。 但IO中的開銷(使用mincemeat.py)使程序變得非常慢。
目前我正在使用它來創建我的列表
#Build the data source
nonces = [i for i in range(0, 400000)]
#Create a dict with a single entry
datasource = dict(enumerate(nonces))
我怎么能改變第一行代碼來創建一個大小為40的列表,其中包含大小為100萬的列表; 所以第一個列表是1-1mil,然后是1mil到2mil等等? 我是否需要分解並制作for循環,或者是否有一個簡單的襯墊我可以實現這個?
這是我如何實現for循環來實現它,它可以被濃縮嗎? (我知道我有重復的數字..)
nonceList = []
for j in range(0, 40):
nonceList.append([i for i in range(j*1000000, (j+1)*1000000)])
datasource = dict(enumerate(nonceList))
不要預先生成連續的數字; 只需讓你的mapreduce任務從起始編號生成它們。
例如,對於40個任務,編號為0-40並使用乘數在任務中生成數字; 在Python 2中,使用xrange()
生成數字,因為range()
將生成一個列表,實現一百萬個整數對象而無法獲得。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.