python, многопроцессорность и dmtcp: контрольная точка одного процесса в пуле?

Можно ли использовать интеграцию Python с dmtcp для контрольной точки дочернего процесса при параллельном выполнении?

У меня следующая ситуация: у меня многопроцессорность. Пул с несколькими работниками, получающими асинхронные задания (используя apply_async). Для некоторых больших заданий требуются все ресурсы (ядра процессора и память). Когда одно из этих заданий будет принято, я хотел бы отметить все ожидающие процессы, выбить их из выполнения, запустить большое задание и, наконец, возобновить процессы с контрольными точками.


person Oscar Esteban    schedule 24.02.2015    source источник


Ответы (1)


Если вы запускаете свою программу на Python, используя dmtcp_launch python ... или dmtcp_launch ./myapp.py, все дочерние процессы, созданные основным процессом, автоматически находятся под контролем контрольной точки. Таким образом, когда вы пытаетесь поставить контрольную точку вычисления из основного процесса, все остальные процессы также получают контрольную точку.

Я не слишком знаком с multiprocessing.Pool, чтобы делать подробные комментарии по этому поводу, но из того, что я понял за одну быструю минуту, вы не хотите проверять свой основной процесс (планировщик). Однако DMTCP перезапустит контрольной точкой все вычисления (включая планировщик) как единое целое. Это приемлемо? Если нет, альтернативой является не запускать планировщик под управлением DMTCP, а модифицировать его так, чтобы запускались только дочерние/подчиненные процессы под контролем контрольной точки. Я не уверен, что это то, что вы можете сделать в своем приложении.

person Kapil Arya    schedule 24.02.2015
comment
Большое спасибо за ваш ответ, я вижу вашу точку зрения. Большинство задач можно запускать под контролем контрольных точек самостоятельно, поэтому я постараюсь пройтись по ним в первую очередь. - person Oscar Esteban; 25.02.2015