如何提高代码中字符串的生成速度?

时间:2019-05-26 18:25:49

标签: python python-3.x

通过搜索,我可以找到以下解决方案,以生成给定字符串的所有组合并计算其哈希值。现在,我可以在21秒内生成10000000个字符串和哈希值。但是,我需要一种更快的方法。

import itertools
import hashlib
import time

def pow():
    global cnt
    authdata = "eTSlASZYlLNgKJuYeIQvGVbiAcLEEOVgAQPzSrtCOIwQxQHyFHcfjgRQJBJDlojx";
    l = 'abcdefghij'
    result = itertools.product(*([l] * 7))
    for each in result:
        cnt = cnt + 1
        suffix = ''.join(each)
        authdataSuffix = authdata + suffix
        hashValue = hashlib.sha1(authdataSuffix.encode('utf-8')).hexdigest()
        if  hashValue.startswith("0"*8):    
            print (hashValue)


cnt = 0
start = time.time() 
pow()
end = time.time()
print(cnt)
print(end - start)

2 个答案:

答案 0 :(得分:0)

除了切换为C++之类的更快语言之外,多线程或多处理将是加快程序速度的最佳方法。

答案 1 :(得分:0)

一些改进之处:

  • 请勿使用global变量
  • 使用timeit进行有意义的测量
  • 使用Python 3
  • 我认为您可以使用permutations from itertools,它生成速度更快,但生成的数据更少
  • 使一切可能保持不变