Многопоточный простой цикл for с независимыми шагамиPython

Программы на Python
Ответить
Гость
 Многопоточный простой цикл for с независимыми шагами

Сообщение Гость »


У меня есть довольно сложный набор уравнений с неподвижной точкой, включающий интегралы по нужным переменным, которые мне нужно решить в сетке. Я могу сократить набор 4х4 (4 уравнения и 4 переменные) до двух систем, каждая из которых имеет размерность 2х2, где я использую решение первого набора в качестве входных данных для второго набора. Я хочу решить эту проблему на довольно большой сетке из двух входных параметров с высокой точностью, как показано в следующем коде:

N = 300 М = 300 A = np.linspace(-3.1,-1,N) Т = np.linspace(0,0005,.1,M) X, Y = np.meshgrid(A, T) v1 = 1 # Фиктивная переменная для кода B = np.empty(форма=(M,N)) C = np.empty(форма=(M,N)) D = np.empty(форма=(M,N)) E = np.empty(форма=(M,N)) для м в диапазоне (М): r = np.array([fp([a,1/T[m],v1],ini) for a in A]) # Первая фиксированная точка, результат [r0,r1] t = np.array([fP([A[a],v1,r[a,0],r[a,1]],ini2) for a in range(N)]) # второй результат [t0,t1 ] В[м] = г[:,0] С[м] = г[:,1] Д[м] = т[:,0] Е[м] = т[:,1] где A,B,C,D в конце — это массивы NxM, которые я хочу построить в виде цветовой карты. Однако код работает довольно медленно, потому что мои функции fp и fP сложны (я уже оптимизировал их с некоторой помощью), поэтому я хотел заставить Python использовать более одного ядра, каждое из которых обрабатывает один из шагов цикла for, так что конец результат моих четырех массивов все еще упорядочен. Однако, поскольку я не работаю в основном с числами (аналитическая физика в целом), мой опыт кодирования ограничен, и из-за этого просмотр документации многопоточного пакета или stackexchange не помог мне в том, чтобы я мог создать код, выполняющий это. . Было бы здорово, если бы кто-нибудь с небольшим опытом рассказал мне, как добиться многопроцессорности на разных ядрах для решения этой конкретной проблемы.

Заранее спасибо :)

Я уже векторизовал все вычисления и пытался самостоятельно научиться использовать несколько ядер в Python, но безуспешно.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»