可以并行生成排列吗?

我想弄清楚是否可以加快排列的生成。具体来说,我使用 [az] 中的 8 个,我想使用 [a-zA-Z] 中的 8 个和 [a-zA-Z0-9] 中的 8 个。我知道这将很快占用大量时间和空间。


即使只是小写 ASCII 字符的长度为 8 的排列也需要一段时间并生成千兆字节。我的问题是我不理解底层算法,所以我无法开始弄清楚我是否可以将问题分解成更小的任务,然后再合并在一起。


我用来生成排列列表的 python 脚本:


import string

import itertools

from itertools import permutations


comb = itertools.permutations(string.ascii_lowercase, 8)


f = open('8letters.txt', 'w')

for x in comb:

        y = ''.join(x)

        f.write(y + '\n')


f.close()

有谁知道如何将其划分为子任务并稍后将它们组合在一起?有可能吗?


我可能只是尝试一种(可能)更快的方法,但是我在使用 C++ 及其 std::next_permutation() 时遇到了麻烦,所以我无法验证它是否可以加快速度。


如果我能把它分成 16 个任务,并在 16 个 Xeon CPU 上运行,然后加入结果,那就太好了。


慕的地6264312
浏览 140回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python