我正在使用这样的算法对小数数组进行一些计算:
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