2015-09-20 5 views
0

Я прочитал это сообщение How to call a function from another file in Python, чтобы узнать, как функция может быть загружена из другого файла. У меня есть производственный код, который работает весь день, и я хочу иметь возможность изменять только одну функцию в этом коде для тестирования/изменения вывода. Я не хочу перезапускать программу каждый раз, когда мне нужно проверить, что мои изменения были успешными.Функция вызова Python из другого файла при каждом вызове функции

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

Аналогичной аналогией может быть стиль HTML и CSS. У меня могут быть отдельные файлы и изменить CSS, чтобы изменить вывод HTML без фактического касания HTML.

ответ

0

Вместо этого вы можете использовать функцию importlib.reload, если вы используете Python 3. Для Python 2 используйте только reload.

import MyModuleWithAFunction 
import importlib 
... 
importlib.reload(MyModuleWithAFunction) 

Подробнее here.

1

Существует действительно способ внести изменения в внешний модуль, отраженный в сеансе программы/питона, без перезапуска программы. Мы можем использовать метод reload() (или importlib.reload() для Python 3.x, если кому интересно). Пример:

... 
import <module> 
reload(<module>)   

Но обратите внимание, что вам нужно будет делать это, когда захотите перезагрузить модуль.

Я бы сказал, что было бы неплохо, если бы программа python запускалась долгое время, если она продолжает повторяться в конкретном iterval. Было бы лучше, если бы работа cron или внешний планировщик выполняли программу python, когда это было необходимо. В случае перезапуска полной программы python перезагрузка модуля не понадобится, поскольку Python всегда будет загружать модуль снова для каждого запуска.

Смежные вопросы