我不想在算法上找到一个好的算法。我认为使用多个进程之间共享的锁迭代器不是最有效的方法。在
def sortCharset(set):
_set = ""
for c in set:
if c not in _set:
_set += c
set = _set
del _set
set = list(set)
set.sort()
return "".join(set)
def stringForInt(num, set, length):
setLen = len(set)
string = ""
string += set[num % setLen]
for n in xrange(1,length):
num //= setLen
string += set[num % setLen]
return string
def bruteforce(set, length, raw = False):
if raw is False:
set = sortCharset(set)
for n in xrange(len(set) ** length):
yield stringForInt(n, set, length)
简短说明: 代码用于创建所有可能的组合 从一组字符,即破解密码。 (当然不是我的本意,只是一些Py训练。;—)
在多核上运行此算法的好方法是什么?
问题其实并不是关于命名样式或如何从字符串中获取一组经过排序的字符。在
您可能需要查看multiprocessing模块。我几乎是一个n00b w/r/t多核并行,但有一些工作要做:
黑客的本质是您需要为
multiprocessing
中的函数使用pickle对象,并且只有在顶层定义的函数才能被pickle。(使用multiprocessing.Value
或multiprocessing.Manager
还有其他方法来解决这个问题,但它们实际上不值得在目前的情况下使用。)以下是各种运行的输出:
^{pr2}$相关问题 更多 >
编程相关推荐