Какая конфигурация для хостинга веб-страниц лучше всего подходит для Cordova (iOS и Android)?

Вы можете перезагрузить модуль, когда он уже был импортирован, используя встроенную функцию reload в Python 2:

import foo

while True:
    # Do some things.
    if is_changed(foo):
        foo = reload(foo)

В Python 3, reload был перемещен в модуль imp . В 3.4 imp устарели в пользу importlib , а к последнему добавили reload . При таргетинге 3 или более поздней версии либо ссылайтесь на соответствующий модуль при вызове reload или импортируйте его.

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

Чтобы процитировать из документов:

Python код модулей перекомпилирован, а код модуля-уровня повторно выполняется, определяя новый набор объектов, которые привязаны к именам в словаре модуля. Функция init модулей расширения не вызывается второй раз. Как и все другие объекты в Python, старые объекты восстанавливаются только после того, как их отсчеты ссылок упадут до нуля. Имена в пространстве имен модулей обновляются, чтобы указывать на любые новые или измененные объекты. Другие ссылки на старые объекты (например, имена, внешние по отношению к модулю) не отскакивают, чтобы ссылаться на новые объекты и должны обновляться в каждом пространстве имен, где они встречаются, если это необходимо.

blockquote>

Как вы отметили в своем вопросе, вам придется восстановить объекты Foo, если класс Foo находится в модуле foo.

0
задан Gdebrig 3 March 2019 в 11:48
поделиться