Как работает функция reload()?
Эта функция нужна для того, чтобы перезагрузить изменившийся код из py-файла без рестарта интерпретатора.
Дело в том, что любой импортированный модуль при повторном импорте не будет перечитывать файл. Функция импорта вернёт уже загруженный в память объект модуля. Чтобы обновить код, нужно либо перезапустить всю программу, либо использовать функцию reload()
from importlib import reload
reload(my_module)
🔸 Функция reload() принимает в качестве аргумента только объект модуля или пакета. Она не может перезагрузить класс или функцию. Только весь файл целиком!
🔸 Перезагрузка пакета перезагрузит только его файл __init__.py, если он есть. Но не вложенные модули.
🔸Она не может перезагрузить ранее не импортированный модуль.
🔸При вызове функция reload() перечитывает и перекомпилирует код в файле, создавая новые объекты. После создания новых объектов перезаписывается ранее созданный неймспейс этого модуля.
Это значит, что если где-то этот модуль импортирован через import и обращение к атрибутам происходит через неймспейс (имя) модуля, то такие атрибуты обновятся.
Если какие-либо объекты из этого модуля импортированы через from то они будут ссылаться на старые объекты.
Напишем простой модуль
# mymodule.py
x = 1
Теперь импортируем модуль и отдельно переменную х из модуля
>>> import mymodule
>>> from mymodule import x
>>> print(mymodule.x)
1
>>> print(x)
1
Не перезапуская интерпретатор вносим изменения в модуль
# mymodule.py
x = 2
Делаем перезагрузку модуля и проверяем х ещё раз
>>> reload(mymodule)
>>> print(mymodule.x)
2
>>> print(x)
1
То же самое будет если присвоить любой объект переменной (даже словарь или список)
Повторный импорт обновляет значение
>>> from mymodule import x
>>> print(x)
2
🔸Созданные инстансы классов не обновятся после перезагрузки модуля. Их придётся пересоздать.
#tricks#basic
Закрытие завода Saudi Aramco из-за атаки
Один из крупнейших в мире заводов Saudi Aramco в Рас-Тануре приостановил работу из-за удара беспилотника. Это происшествие подчеркивает важность безопасности критических объектов энергетики.
Создание более устойчивых систем защиты становится актуальным вызовом для индустрии.
#SaudiAramco#Беспилотники
Russia News — Подпишись
🚢Саудовская Аравия сокращает добычу нефти до около 8 млн баррелей в сутки.
Саудовская Аравия резко снизила добычу нефти после остановки работ на двух крупных офшорных месторождениях — Safaniya и Zuluf. По данным источников рынка, добыча в стране сократилась примерно до 8 млн баррелей в сутки или даже ниже.
До начала текущего кризиса страна добывала около 10,82 млн б/с, из которых 10,11 млн б/с поставлялись на мировой рынок. Совокупная добыча месторождений Safaniya и Zuluf превышала 2 млн б/с, поэтому их остановка существенно повлияла на общий уровень производства.
Сокращение связано с ограничениями экспорта и нарушением морской логистики на фоне кризиса в районе Ормузского пролива — одного из ключевых маршрутов мировой торговли нефтью.
Аналитики отмечают, что даже после стабилизации ситуации быстро восстановить прежний уровень добычи и экспортных потоков будет сложно, поскольку запуск крупных месторождений требует времени и технической подготовки.
Для танкерного рынка это означает сокращение объёмов загрузки в Персидском заливе и усиление волатильности ставок на фоне перераспределения глобальных потоков нефти.
📌Saudi Aramco (Saudi Arabian Oil Company) — национальная нефтяная компания Саудовской Аравии, основанная в 1933 году. Компания контролируется государством Саудовская Аравия и является крупнейшим нефтедобывающим предприятием мира.
#OilMarket#SaudiAramco#EnergyTrade#Hormuz#TankerMarket
🚀 Middle Eastern Oil Producers Prepare for Potential Hormuz Strait Reopening
Middle Eastern oil producers have requested Asian refiners to submit shipping plans for April and May, in anticipation of the potential reopening of the Hormuz Strait. According to Odaily, there is currently no indication that Tehran is lifting its near-total blockade of this crucial waterway, which has previously caused a sharp increase in energy prices. However, a recently announced two-week ceasefire agreement between the U.S. and Iran has sparked hopes for the strait's reopening.
Two sources revealed that Saudi Aramco, the world's largest exporter, has asked its clients to submit applications for May shipments from the ports of Yanbu and Ras Tanura. One source noted that this would depend on the resumption of exports from the eastern port of Ras Tanura, which requires vessels to pass through the Hormuz Strait.
#MiddleEast#OilProducers#HormuzStrait#ShippingPlans#Ceasefire#Iran#EnergyPrices#SaudiAramco#Yanbu#RasTanura#Exports#OilTrade