Как ускорить использование multiprocessing/process_map и др. с тяжелыми вычислениями в Python (например, numpy)?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как ускорить использование multiprocessing/process_map и др. с тяжелыми вычислениями в Python (например, numpy)?

Сообщение Anonymous »


У меня есть функция, написанная на Numpy, каждый вызов которой занимает около 2 секунд, но мне приходится запускать ее десятки тысяч раз. Очевидно, что мне следует использовать многопоточность или многопроцессорность, и самый простой способ — использовать process_map или thread_map в tqdm.contrib.concurrent. Но я обнаружил, что это работает не так, как ожидалось.

Вот пример, который я проверил:

время импорта импортировать numpy как np из tqdm.auto импортировать tqdm из tqdm.contrib.concurrent импорта Process_map, thread_map def mydataset(размер, длина): для ii в диапазоне (длина): выход np.random.rand(*размер) защита расчет (мат): # симулируем тяжелые вычисления для ii в диапазоне (1000): avg = np.mean(mat) станд = np.std(мат) вернуть среднее, стандартное защита основной(): ds = список(mydataset((500,500), 100)) t0 = время.время() рез1 = [] для мата в tqdm(ds): res1.append(calc(mat)) print(f'for цикл: {time.time() - t0}s') t0 = время.время() res2 = список(карта(calc, tqdm(ds))) print(f'родная карта: {time.time() - t0}s') t0 = время.время() res3 = карта_процесса (расчет, дс) print(f'карта процесса: {time.time() - t0}s') t0 = время.время() res4 = thread_map(calc, ds) print(f'threadmap: {time.time() - t0}s') проходить если __name__ == '__main__': основной() И получилось:

100%|███████████████████████████████ ██████████████| 100/100 [00:51
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Process Process Process с более низким использованием процессора
    Anonymous » » в форуме JAVA
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Python Multiprocessing.Process висит, когда в обоих процессах инициализируются крупные тензоры Pytorch
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Python Multiprocessing Process PID отличается от фактического PID
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Python Multiprocessing Process PID отличается от фактического PID
    Anonymous » » в форуме Python
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

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