У меня есть многомерный массив (result
), который должен быть заполнен некоторыми вложенными циклами. Функция fun()
- сложная и трудоемкая функция. Я хочу заполнить элементы массива параллельным образом, поэтому я могу использовать всю вычислительную мощность моей системы. Вот код: «Могу ли я распараллелить этот код или нет, если да, то как?»Распараллеливать эти вложенные петли в python
import numpy as np
def fun(x, y, z):
# time-consuming computation...
# ...
return output
dim1 = 10
dim2 = 20
dim3 = 30
result = np.zeros([dim1, dim2, dim3])
for i in xrange(dim1):
for j in xrange(dim2):
for k in xrange(dim3):
result[i, j, k] = fun(i, j, k)
Мой вопрос заключается в том, что
Я использую Windows 10 64-bit и python 2.7.
Пожалуйста, предоставьте свое решение, изменив свой код, если сможете. Спасибо!
Большой вопрос заключается в том, является ли каждый вызов f независимым или если последующие вызовы зависят от результатов предыдущих вызовов. Если они независимы, тогда ответ Дж. Марии будет работать. Если нет, это будет либо более сложным, либо невозможным. – neil
@neil Каждый вызов fun() не зависит от предыдущих вызовов, но измерения в 10 раз больше, чем 10, 20, 30 в реальной реализации, и я не хочу разделить мои индексы. Я хочу, чтобы решение было более динамичным. –