У меня есть функция, которая может быть зациклирована 10 000 раз за 1 секунду. Однако мне нужно выполнить эту функцию десятки и сотни миллионов раз. Как и ожидалось из-за накладных расходов на использование процессоров, использование собственного пакета multiprocessing
с четырьмя ядрами замедляет цикл 10k до 1,5 секунд. Использование параметра chunksize в multiprocessing
помогло тривиально. Есть ли способ получить несколько процессов для вызова этой функции со скоростью, превышающей накладные расходы?Использование нескольких процессоров для очень быстрой функции в Python
усеченная версия функции:
rands = np.random.random((200, 1000000))
def randfunc(i):
Q = np.concatenate([rands[:,[i]], rands[:,[i]] * rands[:,[i+1]]],axis=1)
Q2 = np.dot(np.transpose(Q),Q)
Q3 = np.linalg.inv(Q2) * Q2[1,1]
return Q3
Вы используете Windows или ОС Unix? – Dunes
У меня есть доступ к Windows и Ubuntu – evoclue