小编vac*_*vac的帖子

在 python 中进行 itertools.combinations 计算多进程?

我正在使用这样的算法对小数数组进行一些计算:

fkn = Decimal('0')
for bits in itertools.combinations(decimals_array, elements_count):
    kxn = reduce(operator.mul, bits, Decimal('1'))
    fkn += kxn
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 3.4 x64。 小数的精度>300(这是必须的)。len(decimals_array) 大多数时候超过 40。 elements_count 大多数时候是 len(decimals_array)/2。

计算需要很长时间。我想让它们成为多进程,所以首先我考虑制作一个所有组合的数组,并将该数组的一部分发送到许多进程 - 但在制作这样的数组期间,我很快就得到了 MemoryError 异常。

现在我正在寻找更好的方法来使该代码多进程。

在多核上运行该算法的好方法是什么?

或者也许有更好(更快)的方法来进行此类计算?

预先感谢您的一些想法。

python combinations decimal multiprocessing python-itertools

5
推荐指数
1
解决办法
2265
查看次数