Наверняка вы замечали, что в Python есть удобная функция для получения переменной окружения
os.getenv(NAME)
И её "сестра" для создания или изменения переменных окружения
os.putenv(NAME, VALUE)
Но почему-то putenv() не работает как должно. Энвайромент не обновляется!
os.putenv('MYVAR', '1')
print(os.getenv('MYVAR'))
... и ничего 😴
Почему так?
На самом деле энвайромент обновляется, но это значение не добавляется в словарь os.environ.
Откройте исходник функции os.getenv(). Это просто шорткат для os.environ.get()
В то время как putenv() это built-in С-функция.
Словарь os.environ (или точней класс из MutableMapping) создаётся из энвайромента в момент инициализации. Функция putenv() самостоятельно его не изменяет.
В тоже время, когда вы создаёте или изменяете ключ в os.environ, автоматически вызывается putenv() в методе __setitem__().
То есть, технически putenv() всё делает верно, но в os.environ это не отражается. Можно проверить так:
>>> os.putenv('MYVAR', '123')
>>> os.system('python -c "import os;print(os.getenv(\'MYVAR\'))"')
123
Я объявил переменную в текущем процессе и вызвал дочерний процесс, который её унаследовал и получил в составе os.environ.
Аналогично при удалении переменной вызывается еще одна built-in функция unsetenv(), удаляющая переменную из системы.
Итого
▫️ Удобней всего явно обновлять переменные через os.environ
▫️ Есть способ неявно создать/удалить переменную через putenv/unsetenv, что не повлияет на os.environ но изменит энвайромент и передаст изменения сабпроцессам. Но так лучше не делать!
▫️os.environ это просто обертка для built-in функций putenv() и unsetenv().
#basic
Корпус морской пехоты США этой осенью начнёт испытания полупогружных безэкипажных катеров для доставки грузов на передовые позиции.
Испытания будет проводить III MEF, дислоцирующийся на Окинаве.
#США#USMC
Вестник NATO
Комендант КМП США генерал Эрик Смит опубликовал новое руководство по планированию для корпуса морской пехоты.
Командование и контроль, а также обмен данными будут играть огромную роль в будущих конфликтах, особенно в реализации таких концепций, как силы продвижения и поддержки (Stand-In Forces) и экспедиционные передовые базовые операции (Expeditionary Advanced Base Operations). Но при этом Смит подчеркнул важность MAGTF (Marine Air-Ground Task Force) как основного подразделения корпуса.
Будущие крупномасштабные боевые операции потребуют полностью обеспеченного ресурсами и модернизированного командного звена в MEF и промежуточных штабах (например, бригада, дивизия, группа МТО и авиакрыло). Необходимо продолжать инвестирование в JADC2 и развитие сетецентрической концепции «Kill web», а также разрабатывать элементы C2 меньшего форм-фактора, использовать достижения ИИ для улучшения процесса принятия решений на поле боя.
Ведущую роль среди подразделений корпуса будет играть 3-й экспедиционный корпус (III MEF), поскольку местом его дислокации и зоной ответственности является Индо-Тихоокеанский регион.
Корабли корпуса могли бы служить стартовой площадкой для роботизированных систем, а некоторые БПЛА и БЭК «идеально подходят для наших колодезных и лётных палуб». Автономные системы также рассматриваются как средство пополнения запасов в районах, где логистика может быть затруднена, идёт работа над улучшением ракетных систем LRMB. Корпус продолжает экспериментировать с БПЛА, системами борьбы с беспилотниками и другими инструментами, извлекая уроки из продолжающихся конфликтов на Украине и Ближнем Востоке.
#НАТО#США#USMC
Вестник NATO
Военнослужащие 15-го экспедиционного корпуса морской пехоты демонстрируют системы борьбы с БПЛА на борту USS Boxer:
• Переносная станция РЭБ SNC MODI-II;
• Противодроновое ружьё NightFighter S;
• Комплекс борьбы с беспилотниками Ascent Vision LMADIS, установленный на шасси багги MRZR;
• M16A4 с интеллектуальной системой наведения SmartShooter SMASH 2000 Plus;
• ПЗРК FIM-92 Stinger с тепловизионным прицелом Leonardo FWS-I.
#USMC#cUAS
Вестник NATO
Подборка с учений боевой наземной группы (BLT) 1-го батальона 4-й дивизии морской пехоты, входящей в состав 31-го экспедиционного корпуса США, в префектуре Окинава, Япония.
В равниной местности в районе базы Кэмп Шваб был проведён рейд с использованием гранатомётов AT4, учения в Кэмп Хансен имитировали патрулирование в подконтрольном населённом пункте.
#НАТО#США#USMC#Подборка
Вестник NATO
Морские пехотинцы из Marine Medium Tiltrotor Squadron 165, входящей в состав 15-й экспедиционной группы морской пехоты США, установили тактическую навигационную систему (TACAN) на борту десантного корабля USS Boxer (LHD 4) для тестирования работы с вертолетом MH-60S Sea Hawk. Испытания прошли 20 сентября в Восточно-Китайском море.
Система TACAN обеспечивает наземным и авиа-пользователям определение азимута и наклонной дальности.
Определение азимута по системе ТАКАН осуществляется путем излучения ненаправленного сигнала и вращающегося направленного сигнала, разность фаз которых пропорциональна азимуту относительно направления на север. Несущая часть системы ТАКАН лежит в диапазоне частот порядка 1000 гц. Вращающийся направленный сигнал с переменной фазой получается путем механического вращения элементов антенны.
Кроме того, карднода с переменной фазой, вращающаяся с частотой 15 гц, модулируется дополнительно сигналом с частотой в 135 гц, фаза которого также сравнивается с сигналом эталонной фазы.
Результат этого сравнения дает возможность получить девятикратное увеличение точности измерения азимута.
#USMC#cUAS#Подборка
Вестник NATO