Как использовать многопроцессорность для запуска отдельных испытаний на отдельных ядрах - PullRequest
1 голос
/ 03 апреля 2020

Моя проблема, кажется, простая, но пока я не нашел удовлетворительного ответа. Код, который я запускаю, занимает очень много времени, и мне нужно запускать его много раз (в идеале 100 или более раз) и усреднять результаты каждого испытания. Мне сказали попробовать multiprocessing, и я добился определенного прогресса (в JupyterLab).

#my_code.py
def Run_Code():
    <code>
    return result
import multiprocessing as mp
import numpy as np
import my_code as mc

trial_amount = 2
if __name__ == '__main__':
    pool = mp.Pool(2)
    result = pool.map(mc.Run_code, np.arange(trial_amount))
    print(result)

Я руководствовался этим введением (https://sebastianraschka.com/Articles/2014_multiprocessing.html#sections). Конечная цель состоит в том, чтобы просто запустить каждое испытание одновременно (или как можно большее количество одновременно, и как только оно закончится, начать другое испытание и т. Д.) И поместить результаты в список, который затем будет усреднен. Я попробовал это, и оно продолжалось несколько часов, гораздо дольше, чем одно испытание, и никогда не заканчивалось.

1 Ответ

0 голосов
/ 03 апреля 2020

Попробуйте mpi4py - { ссылка } дает пример того, как это происходит.

Здесь есть большое и простое руководство:

https://mpi4py.readthedocs.io/en/stable/tutorial.html

Это всего лишь несколько строк. Следующего также достаточно, чтобы вы пошли. Он разделяет все oop работы над ядрами, а затем агрегирует результаты по мастеру:

{ ссылка }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...