Где лучше всего вызывать функцию многопроцессорности Python? - PullRequest
0 голосов
/ 21 июня 2020

Я написал сценарий, который моделирует серию биохимических реакций с течением времени и отображает результаты изменения количества молекул на графике. Теперь мне нужно начать распараллеливание скрипта, начиная с одновременного запуска нескольких симуляций. Я прочитал документацию по питонам multiprocessing и получил следующий код:

if __name__ == '__main__':
with Pool() as Pool:   
    result = Pool.apply_async(gillespie_tau_leaping, [propensity_calc, popul_num, LHS, stoch_rate, popul_num_all, tao_all, rxn_vector, tao, epsi])  
    print(result.get(timeout=1))

На данный момент это конец моего скрипта.

Функция, которую я пытаюсь использовать parallelise - это gillespie_tau_leaping, который в основном является большим while l oop, который имитирует, пока текущее время ниже определенного порога, и обновляет входные массивы, такие как popul_num, с номерами молекул после того, как определенная реакция c уволен.

Я не знаю, где разместить приведенный выше код распараллеливания, когда он находится в конце моего скрипта, он действительно не работает, потому что он моделирует все один раз, достигает распараллеливания, а затем моделирует все это снова в параллели. Но если я поставлю его в начале, я буду ссылаться на функцию до того, как определю ее.

Должен ли я оставить ее в конце или есть что-то еще, что я могу сделать, чтобы смоделировать ее параллельно в начале ?

Есть предложения?

Ура

...