Я написал сценарий, который моделирует серию биохимических реакций с течением времени и отображает результаты изменения количества молекул на графике. Теперь мне нужно начать распараллеливание скрипта, начиная с одновременного запуска нескольких симуляций. Я прочитал документацию по питонам 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 уволен.
Я не знаю, где разместить приведенный выше код распараллеливания, когда он находится в конце моего скрипта, он действительно не работает, потому что он моделирует все один раз, достигает распараллеливания, а затем моделирует все это снова в параллели. Но если я поставлю его в начале, я буду ссылаться на функцию до того, как определю ее.
Должен ли я оставить ее в конце или есть что-то еще, что я могу сделать, чтобы смоделировать ее параллельно в начале ?
Есть предложения?
Ура