【发布时间】:2015-12-15 18:24:51
【问题描述】:
我正在创建一种算法,该算法使用生成器对象蛮力搜索 3x3 矩阵的条件以创建所有可能的组合。目前,在单个线程上运行它所需的时间将花费大量时间,但是我可以访问具有许多内核 (64) 的计算机,因此将其线程化为具有至少 20 个线程将是非常可行的选项。
但是,我不能简单地将生成器对象转换为列表并将列表分成大小相等的块。存储列表列表所需的 RAM 量太高了。
我的单线程方法(为问题简化)如下:
def permute(xs, low=0):
if low + 1 >= len(xs):
yield xs
else:
for p in permute(xs, low + 1):
yield p
for i in range(low + 1, len(xs)):
xs[low], xs[i] = xs[i], xs[low]
for p in permute(xs, low + 1):
yield p
xs[low], xs[i] = xs[i], xs[low]
generator_obj = permute(range(9))
for l in generator_obj:
search_conditions(l)
什么是线程化的好方法?
【问题讨论】:
标签: python multithreading generator python-multithreading brute-force