Мне просто интересно, есть ли какой-нибудь код python или магии, которые я могу выполнить, который перезапустит кластер ipython. Кажется, каждый раз, когда я меняю свой код, его нужно перезапустить.Можно ли перезапустить кластер iPython из ноутбука?
ответ
Простая идея, кажется, слишком «Hacky» для производства:
установки в Client
и определить простую функцию для тестирования.
import ipyparallel as ipp
c = ipp.Client()
dv = c[:]
# simple function
@dv.remote(block=True)
def getpid():
import os
return os.getpid()
getpid()
[1994, 1995, 1998, 2001]
Определите функцию перезапуска кластера. shutdown
с targets='all'
и hub=True
должен убить весь кластер. Затем запустите новый кластер с помощью команды !
или %sx.
import time
def restart_ipcluster(client):
client.shutdown(targets='all', hub=True)
time.sleep(5) # give the cluster a few seconds to shutdown
# include other args as necessary
!ipcluster start -n4 --daemonize
time.sleep(60) # give cluster ~min to start
return ipp.Client() # with keyword args as necessary
Одним из недостатков такого подхода заключается в том, что DirectView должен быть повторно назначено и любая функция украшены dv.remote
или dv.parallel
потребности быть повторно выполнена.
c = restart_ipcluster(c)
dv = c[:]
@dv.remote(block=True)
def getpid():
import os
return os.getpid()
getpid()
[3620, 3621, 3624, 3627]
Чтение источник для ipyparallel Client
, то shutdown
метод упоминалось выше, имеет ключевое слово аргумент, restart=False
, но в настоящее время не осуществляется. Возможно, разработчики работают над надежным методом.
Спасибо за предложение; Я отдам его. Есть ли причина, почему по дизайну основной ноутбук не имеет контроля за процессом? – cjm2671
Мне интересно, есть ли расширение для ноутбука, которое могло бы это сделать, но у меня возникли сомнения в том, что код, запущенный внутри ноутбука, который перезагружает его, может привести к бесконечному циклу запуска-перезапуска. –