У меня есть эта оригинальная функция, которую я хочу переключить на многопроцессорность:
def optimal(t0, tf, frequences, delay, ratio = 0):
First = True # First
for s in delay:
delay = 0 # delay between signals,
timelines = list()
for i in range(len(frequences)):
timelines.append(time_builder(frequences[i], t0+delay, tf))
delay += s
trio_overlap = trio_combination(timelines, ratio)
valid = True
for items in trio_overlap.values():
if len(list(set(items))) == len(items):
continue
else:
valid = False
if not valid:
continue
overlap = duo_combination(timelines)
optimal = ... depending of conditions
return optimal
Если valid = True
после теста, он вычислит параметр оптимизации с именем optim_param
и попытается минимизировать его. Если оно достигает определенного порога, optim_param < 0.3
, я выхожу из цикла и принимаю это значение в качестве своего ответа.
Моя проблема в том, что по мере разработки моей модели сложность начинает расти, а однопоточные вычисления занимают слишком много времени. Я хотел бы обрабатывать вычисления параллельно. Поскольку каждый процесс должен будет сравнивать результат, полученный со значением s, с текущим оптимальным, я попытался реализовать Queue.
Я впервые занимаюсь многопроцессорной обработкой, и даже если я думаю, что нахожусь на правильном пути, мне кажется, что мой код беспорядочный и неполный. Могу ли я получить некоторую помощь?
Спасибо
shift
иfrequencies
. Не могли бы вы показать пример вводаt0
иtf
? Кроме того, не могли бы вы пересмотретьshift
с меньшим количеством шагов? Скажем,1000
или10000
выполняются параллельно, чтобы упростить начальное тестирование? - person thewaywewere   schedule 27.02.2018t0 = 0
иtf = 200
. Для сдвига, конечно, мы можем взятьnp.arange(0, 2, 0.1)
для начала. - person Mathieu   schedule 27.02.2018