Успевайте заказать остекление

ПО СТАРЫМ ЦЕНАМ!!!

Демонтаж старого балкона - бесплатно!

Обшили балкон вагонкой чем ее обработать


выбор состава и методы обработки

На чтение 9 мин.

Экологичность древесины, ее внешние характеристики и практичность, позволяют использовать этот материал для отделки внутри помещения, в том числе, на балконах и лоджиях. Наиболее удобный и в то же время привлекательный эстетически вариант – обшивка стен деревянной вагонкой. Но у древесины есть свои особенности: в чистом виде этот материал плохо переносит избыточную влажность, ультрафиолет, легко царапается, затирается и в результате выглядит не лучшим образом. О том, как предотвратить преждевременное разрушение деревянной вагонки и максимально сохранить ее декоративные качества, пойдет речь далее в этой статье.

Нужно ли покрывать вагонку

Преимущества обработки защитными и декоративными материалами:

  • Предотвращение появления гнилостных образований, плесневых грибков и жучка. Данные явления могут существенно сократить срок службы любых изделий из дерева, в том числе и вагонки, поэтому обработка антисептиком обязательна.
  • Защита от внешних воздействий. Поверхность непокрытой вагонки достаточно уязвима, она легко царапается (в особенности мягкие породы), на ней со временем образуются скопления грязи, которую достаточно трудно удалить. Кроме того, незащищенное дерево быстро отсыревает, если окружающая влажность этому способствует, а после высыхания, например с наступлением лета, детали деформируются и уменьшаются в размерах, из-за чего могут появляться щели и неровности на поверхности отделанных стен. Солнечный свет также не лучшим образом влияет на вагонку: дерево темнеет и быстрее разрушается.
  • Декор. Правильно подобрав средство для покрытия, можно сделать отделку, гармонирующую с интерьером практически любого балкона или лоджии.

Есть и недостатки:

  • Дерево – это природный живой материал, но при обработке каким-либо защитным или декоративным составом его экологичность приближается к уровню используемого покрытия. Это особенно актуально для лаков, которые лишь частично впитываются в поры древесины, а основная масса образует сплошную пленку на поверхности.
  • Декоративные покрытия требуют периодического обновления.

Как выбрать состав

При выборе подходящей смеси для обработки прежде всего необходимо учесть условия эксплуатации облицовочного материала. Лоджию или балкон не всегда можно считать наружными помещениями, например, если есть нормальное остекление и соответствующая облицовка периметра. В таких случаях вполне возможно применение материалов для внутренней отделки.

Отсутствие остекления или его некачественная реализация не дадут достаточной защиты от неблагоприятных атмосферных воздействий, из-за чего материалы для внутренних работ будут малоэффективны. Неостекленные балконы относятся к внешним строениям и требуют соответствующих средств обработки (фасадные краски, лаки, грунтовки и т.д.).

Помимо лакокрасочных материалов также используются разного рода антисептики и средства, придающие древесине дополнительные свойства, например, стойкость к воспламенению. Использование подобных средств необходимо для обычной вагонки – евровагонку продают предварительно обработанной.

Краски

Любой вид этого покрытия полностью или частично скрывает текстуру древесины, а если нанесен достаточно толстый слой, то можно достичь практически полной визуальной имитации пластика. Главное преимущество данного варианта – возможность окрасить вагонку в подходящий цвет, соответствующий общему дизайну помещения. Краска непрозрачна, что позволяет скрыть цветовые дефекты (потемнения) древесины и мелкие царапины, а также максимально защитить поверхность от воздействия ультрафиолета.

Масляные

Это смеси, изготовленные на базе масел растительного происхождения, что во многом определяет их характеристики. Глубоко проникая в структуру древесины, масло оставляет открытыми ее поры. В результате материал остается проницаем для воздуха (дышит), как и до обработки. При многослойном покрытии образуется прочная пленка, стойкая к растрескиванию.

Недостатки:

  • Сравнительно долго сохнет (от 7 часов до 1 суток). В некоторых случаях краска может липнуть в течение нескольких дней.
  • Выгорает под прямыми солнечными лучами (особенно яркие и темные цвета). Интенсивность процесса зависит от качества пигмента, используемого в конкретном материале.

Густотертые алкидные эмали

Базовая составляющая и основной растворитель – натуральная или синтетическая олифа. Многослойное покрытие характеризуется высокой морозоустойчивостью, достаточно эластично, что исключает растрескивание в течение продолжительного времени. Поверхность, обработанная качественной алкидной эмалью, устойчива механическим воздействиям. По сравнению с необработанной древесиной, ее достаточно трудно поцарапать или сделать на ней вмятину.

Полупрозрачные краски

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

Фасадные краски

Группа продуктов, предназначенных для обработки деревянных изделий, эксплуатация которых будет происходить преимущественно в условиях негативных атмосферных воздействий. В качестве основы могут использоваться разного рода масла, синтетические растворители, алкидные смолы и даже вода. Фасадные краски образуют прочное, стойкое к механическим повреждениям, перепадам влажности и температур. На данный момент главным их недостатком считается сравнительно малый цветовой ассортимент.

Лаки для вагонки на балконе

В отличие от краски, лак оставляет текстуру древесины полностью видимой, сохраняя ее естественный внешний вид. Однако защитные функции лаков, хоть и находятся на достаточно высоком уровне, в большинстве случаев несколько уступают непрозрачным покрытиям. В частности, это касается фильтрации УФ излучения, которая присутствует (если верить этикетке) практически во всех, даже бюджетных, продуктах. На самом деле далеко не каждый лак в состоянии обеспечить должную защиту от прямого солнечного света на протяжении длительной эксплуатации.

Требования к качеству древесины при лакировании также будут отличаться. Прозрачное покрытие не в состоянии скрыть цветовые и механические дефекты: если для изготовления использовался клееный брус, будут просматриваться места склейки; уже не получится незаметно зашпаклевать выбоины и заделать выпавшие сучки. Выбирая вагонку под лак, особенно без тонировки, следует отдавать предпочтение только изделиям из первосортной древесины, без каких-либо дефектов.

Сейчас для обработки применяют лаки на водной основе (аквалаки), а также алкидные и полиуретановые составы.

Водорастворимые акриловые лаки

Наиболее экологичный и безопасный в использовании вариант покрытия. Такие смеси не имеют неприятного запаха, что существенно облегчает процесс покрытия – ненужно длительного интенсивного проветривания и защитных средств. Лаки на водной основе характеризуются сравнительно малой степенью проникновения. После быстрой полимеризации (2-3 часа) образуют эластичную защитную пленку, которая в зависимости от состава, бывает либо прозрачной, либо пигментируется в тон, имитирующий ценные породы дерева. Прозрачным смесям можно придать желаемый оттенок, добавлением водных или спиртовых морилок.

Оттенки вагонки после обработки морилками

Высохшая водорастворимая смесь устойчива к влаге, но не отличается высокой механической прочностью и стойкостью к атмосферным явлениям, поэтому применяется в основном внутри помещений. Если речь идет об отделке балкона, остекление обязательно.

При покупке следует обращать внимание на срок годности, поскольку при несоблюдении условий хранения в зимнее время водный раствор перемерзает и теряет свои эксплуатационные свойства.

Алкидные лаки

Изготавливаются на базе синтетических смол. Полная полимеризация первого слоя наступает в течение суток, после чего образуется прочное покрытие, стойкое к механическим повреждениям. Защита от ультрафиолета малоэффективна, как и стойкость к атмосферным явлениям. Однако при отсутствии прямого попадания осадков или длительного воздействия солнечного света даже недорогая продукция может простоять довольно долго.

Алкидный лак производят полностью прозрачным или с желтоватым оттенком, есть глянцевый и матовый варианты, а также составы с тонирующими добавками. Матовая продукция изготавливается с применением специальных добавок, поэтому стоит несколько дороже, но и смотрится лучше.

Полиуретановые лаки

Более качественные и дорогие синтетические средства сходные по свойствам с алкидными аналогами. Как правило, не предназначены для использования вне помещений, но на остекленных неотапливаемых балконах прослужат не один год, полностью сохраняя защитные свойства. После полимеризации (до 1 суток) образуют эластичную пленку, не такую твердую, как у алкидной продукции, но данный факт относят к положительным свойствам, поскольку такое покрытие не растрескивается и не отслаивается при температурных деформациях древесины.

Как и все смеси на основе синтетических растворителей (в том числе алкидные), имеет неприятный запах, который полностью улетучивается после высыхания. Наносить нужно в хорошо проветриваемом помещении, желательно использовать средства защиты органов дыхания.

Как покрывать защитным и декоративным составом

Способ применения зависит от конкретного продукта и описан производителем на его упаковке. Однако есть ряд правил, которые будут верны в большинстве распространенных ситуаций.

  • Защитные пропитки (антисептики, средства, подавляющие горючесть древесины, и прочее) наносятся со всех сторон до монтажа вагонки.
  • Первый слой тонировки также лучше нанести на отдельные детали (если со временем они немного усохнут, этого не будет заметно).
  • Работы лучше выполнять в теплую сухую погоду (большинство средств медленно сохнут при температуре ниже +20° C), в хорошо проветриваемом помещении, особенно при покрытии алкидными или полиуретановыми смесями.
  • Наносить можно кисточкой, валиком или распылителем. Наиболее экономичный вариант – малярная кисть. Качественней всего получается распылителем (равномерное распределение лака, идеально гладкая поверхность), но данный способ трудно осуществим в рамках балкона, требует соответствующего оборудования и определенных навыков. Кроме того, расход будет больше, так как часть смеси при распылении не попадает на деталь.

Пошаговая инструкция покрытия алкидным лаком с предварительной тонировкой:

  1. Обрабатываем отдельные планки антисептиком и ждем полного высыхания;
  2. До или после монтажа вагонки наносим первый тонирующий слой и даем полностью высохнуть.

    Тонировка спиртовыми морилками в два слоя

  3. Повторяем описанное во 2 пункте до достижения желаемого цвета.
  4. Наносим защитный лак (обычно в два слоя).

Алкидными тонирующими лаками покрывают не менее двух раз. Первый слой впитывается и поднимает ворс, его аккуратно шлифуют мелкой наждачной бумагой (чтобы не стереть до дерева), после чего наносят финишный слой прозрачным лаком или тем же тонирующим средством, если нужно добиться нужного цвета.

Полезное видео по теме:

'a' должно быть больше 0, если не берутся образцы. · Проблема № 10 · Alfred1984 / Интересно-python · GitHub

перейти к содержанию Зарегистрироваться
  • Почему именно GitHub? Особенности →
    • Обзор кода
    • Управление проектами
    • Интеграции
    • Действия
    • Пакеты
    • Безопасность
    • Управление командой
    • Хостинг
    • мобильный
    • Истории клиентов →
    • Безопасность →
  • Команда
  • Предприятие
.

В 10 раз более быстрый параллельный Python без многопроцессорной обработки Python | Роберт Нишихара

Более быстрый Python без реструктуризации кода

Хотя многопроцессорная библиотека Python успешно используется для широкого спектра приложений, в этом сообщении в блоге мы показываем, что она не подходит для нескольких важных классов приложений, включая обработку числовых данных, вычисление с сохранением состояния и вычисления с дорогостоящей инициализацией. Есть две основные причины:

  • Неэффективная обработка числовых данных.
  • Отсутствуют абстракции для вычислений с сохранением состояния (т. Е. Невозможность совместного использования переменных между отдельными «задачами»).

Ray - это быстрая и простая среда для создания и запуска распределенных приложений , которые решают эти проблемы. Для ознакомления с некоторыми из основных концепций см. Это сообщение в блоге. Ray использует Apache Arrow для эффективной обработки данных и предоставляет абстракции задач и акторов для распределенных вычислений.

В этом сообщении блога сравниваются три рабочие нагрузки, которые нелегко выразить с помощью многопроцессорной обработки Python, и сравнивается Ray, многопроцессорность Python и последовательный код Python. Обратите внимание, что важно всегда сравнивать с оптимизированным однопоточным кодом.

В этих тестах Ray - 10–30x быстрее, чем последовательный Python, 5–25x быстрее, чем многопроцессорность, и 5–15x быстрее, чем быстрее из этих двух на большой машине.

На машине с 48 физическими ядрами Ray на 9x быстрее, чем многопроцессорный Python, и 28x быстрее, чем однопоточный Python. Отображаются планки погрешностей, но в некоторых случаях они слишком малы, чтобы их можно было увидеть. Код для воспроизведения этих чисел доступен ниже. Рабочая нагрузка масштабируется по количеству ядер, поэтому больше работы выполняется на большем количестве ядер (вот почему последовательный Python занимает больше времени на большем количестве ядер).

Тесты выполнялись на EC2 с использованием типов инстансов m5 (m5.large для 1 физического ядра и m5.24xlarge для 48 физических ядер). Код для запуска всех тестов доступен здесь. Сокращенные фрагменты включены в этот пост. Основные отличия заключаются в том, что полные тесты включают 1) код синхронизации и печати, 2) код для разогрева хранилища объектов Ray и 3) код для адаптации теста к небольшим машинам.

Чтобы узнать больше о том, как компании используют Ray в производстве для ускорения своих приложений Python, зарегистрируйтесь на бесплатную Ray Summit .

Узнайте, как компании используют Ray в производстве для ускорения своих приложений Python на Ray Summit 2020.

Многие рабочие нагрузки машинного обучения, научных вычислений и анализа данных интенсивно используют большие массивы данных. Например, массив может представлять большое изображение или набор данных, а приложение может пожелать, чтобы несколько задач анализировали изображение. Эффективная обработка числовых данных имеет решающее значение.

Каждый проход через цикл for ниже занимает 0,84 с, с Ray, 7.5s с многопроцессорной обработкой Python и 24s с последовательным Python (на 48 физических ядрах). Этот разрыв в производительности объясняет, почему можно создавать библиотеки, подобные Modin, поверх Ray, но не поверх других библиотек.

Код с Рэем выглядит следующим образом.

Код для примера обработки игрушечного изображения с использованием Ray.

При вызове ray.put (image) большой массив сохраняется в общей памяти и может быть доступен для всех рабочих процессов без создания копий.Это работает не только с массивами, но и с объектами, которые содержат массивы (например, списки массивов).

Когда рабочие выполняют задачу f , результаты снова сохраняются в общей памяти. Затем, когда сценарий вызывает ray.get ([...]) , он создает множество массивов, поддерживаемых общей памятью, без необходимости десериализации или копирования значений.

Эти оптимизации стали возможными благодаря использованию Рэем Apache Arrow в качестве базового формата данных и формата сериализации, а также хранилища объектов общей памяти Plasma.

В многопроцессорном Python код выглядит следующим образом.

Код для примера обработки игрушечного изображения с использованием многопроцессорной обработки.

Разница в том, что многопроцессорность Python использует pickle для сериализации больших объектов при их передаче между процессами. Этот подход требует, чтобы каждый процесс создавал свою собственную копию данных, что увеличивает использование памяти, а также накладные расходы на дорогостоящую десериализацию, чего Рэй избегает, используя макет данных Apache Arrow для сериализации с нулевым копированием вместе с хранилищем Plasma.

Рабочие нагрузки, которые требуют существенного «состояния» для разделения между множеством небольших рабочих единиц, являются еще одной категорией рабочих нагрузок, которые создают проблему для многопроцессорной обработки Python. Этот шаблон очень распространен, и я проиллюстрирую его на примере игрушечного приложения для обработки потокового видео.

На машине с 48 физическими ядрами Ray на 6x быстрее, чем многопроцессорный Python, и 17x быстрее, чем однопоточный Python. Многопроцессорность Python не превосходит однопоточный Python менее чем на 24 ядрах.Рабочая нагрузка масштабируется по количеству ядер, поэтому больше работы выполняется на большем количестве ядер (вот почему последовательный Python занимает больше времени на большем количестве ядер).

State часто инкапсулируется в классы Python, а Ray предоставляет абстракцию актора, так что классы могут использоваться в параллельной и распределенной настройке. Напротив, многопроцессорность Python не обеспечивает естественного способа распараллеливания классов Python, и поэтому пользователю часто нужно передавать соответствующее состояние между вызовами map . Эту стратегию может быть сложно реализовать на практике (многие переменные Python нелегко сериализовать), и она может быть медленной, когда она действительно работает.

Ниже приведен игрушечный пример, в котором используются параллельные задачи для обработки одного документа за раз, извлечения префиксов каждого слова и возврата наиболее распространенных префиксов в конце. Счетчики префиксов хранятся в состоянии актора и изменяются различными задачами.

В этом примере используются 3,2 с с Ray, 21 с с многопроцессорной обработкой Python и 54 с с последовательным Python (на 48 физических ядрах).

Версия Ray выглядит следующим образом.

Код для примера обработки игрушечного потока с использованием Ray.

Ray хорошо работает здесь, потому что абстракции Ray подходят для решения поставленной задачи. Этому приложению необходим способ инкапсуляции и изменения состояния в распределенной настройке, и действующие лица соответствуют всем требованиям.

Многопроцессорная версия выглядит следующим образом.

Код для примера обработки игрушечного потока с использованием многопроцессорной обработки.

Проблема здесь в том, что pool.map выполняет функции без сохранения состояния, что означает, что любые переменные, созданные в одном вызове pool.map , которые вы хотите использовать в другом пуле .Вызов карты должен быть возвращен из первого вызова и передан во второй вызов. Для небольших объектов этот подход приемлем, но когда необходимо совместно использовать большие промежуточные результаты, стоимость их передачи непомерно высока (обратите внимание, что это было бы неверно, если бы переменные совместно использовались между потоками, но потому что они общие для всех границ процесса, переменные должны быть сериализованы в строку байтов с использованием библиотеки, такой как pickle).

Так как многопроцессорная версия должна передавать так много состояний, она выглядит крайне неудобной и, в конце концов, обеспечивает лишь небольшое ускорение по сравнению с последовательным Python.В действительности вы не стали бы писать такой код, потому что вы просто не использовали бы многопроцессорность Python для потоковой обработки. Вместо этого вы, вероятно, использовали бы специальный фреймворк для потоковой обработки. Этот пример показывает, что Ray хорошо подходит для создания такого фреймворка или приложения.

Одно предостережение заключается в том, что существует множество способов использования многопроцессорной обработки Python. В этом примере мы сравниваем с Pool.map , потому что он дает наиболее близкое сравнение API. В этом примере должно быть возможно достичь лучшей производительности, запустив отдельные процессы и установив между ними несколько многопроцессорных очередей, однако это приводит к сложной и неустойчивой конструкции.

В отличие от предыдущего примера, многие параллельные вычисления не обязательно требуют разделения промежуточных вычислений между задачами, но в любом случае они получают выгоду. Даже вычисления без сохранения состояния могут выиграть от совместного использования состояния, когда инициализация состояния требует больших затрат.

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

На машине с 48 физическими ядрами Ray на 25x быстрее, чем многопроцессорный Python, и 13x быстрее, чем однопоточный Python.В этом примере многопроцессорность Python не превосходит однопоточный Python. Отображаются планки погрешностей, но в некоторых случаях они слишком малы, чтобы их можно было увидеть. Рабочая нагрузка масштабируется по количеству ядер, поэтому больше работы выполняется на большем количестве ядер. В этом тесте «последовательный» код Python фактически использует несколько потоков через TensorFlow. Изменчивость многопроцессорного кода Python возникает из-за изменчивости многократной загрузки модели с диска, в которой другие подходы не нуждаются.

В этом примере используется 5s с Ray, 126s с многопроцессорной обработкой Python и 64s с последовательным Python (на 48 физических ядрах).В этом случае последовательная версия Python использует много ядер (через TensorFlow) для распараллеливания вычислений, поэтому на самом деле она не является однопоточной.

Предположим, мы изначально создали модель, выполнив следующие действия.

Код для сохранения модели нейронной сети на диск.

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

Версия Ray выглядит следующим образом.

Код для примера классификации игрушек с использованием Ray.

Загрузка модели происходит достаточно медленно, поэтому нам нужно сделать это только один раз. Версия Ray амортизирует эту стоимость, загружая модель один раз в конструктор актера. Если модель нужно разместить на GPU, то инициализация будет еще дороже.

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

Многопроцессорная версия выглядит следующим образом. Обратите внимание, что в некоторых случаях этого можно достичь, используя аргумент инициализатора для многопроцессорной обработки . Пул . Однако это ограничено настройкой, при которой инициализация одинакова для каждого процесса и не позволяет различным процессам выполнять разные функции настройки (например, загружать разные модели нейронной сети), а также не позволяет выполнять разные задачи. быть ориентированными на разных работников.

Код для примера классификации игрушек с использованием многопроцессорной обработки.

Во всех этих примерах мы увидели, что производительность Ray зависит не только от оптимизации производительности, но и от наличия абстракций, подходящих для текущих задач. Вычисления с сохранением состояния важны для многих приложений, и принуждение вычислений с сохранением состояния к абстракциям без сохранения состояния обходится дорого.

Перед запуском этих тестов вам необходимо установить следующее.

 pip install numpy psutil ray scipy tensorflow 

Затем все приведенные выше числа можно воспроизвести, запустив эти сценарии.

Если у вас возникли проблемы с установкой psutil , попробуйте использовать Anaconda Python.

Исходные тесты выполнялись на EC2 с использованием типов инстансов m5 (m5.large для 1 физического ядра и m5.24xlarge для 48 физических ядер).

Чтобы запустить экземпляр на AWS или GCP с правильной конфигурацией, вы можете использовать средство автомасштабирования Ray и выполнить следующую команду.

 ray up config.yaml 

Здесь представлен пример config.yaml (для запуска m5.4xlarge экземпляр).

Хотя это сообщение в блоге посвящено тестам между многопроцессорностью Ray и Python, сравнение яблок с яблоками затруднено, потому что эти библиотеки не очень похожи. Отличия заключаются в следующем.

  • Ray разработан для обеспечения масштабируемости и может запускать один и тот же код как на портативном компьютере, так и в кластере (многопроцессорность выполняется только на одном компьютере).
  • Рабочие нагрузки Ray автоматически восстанавливаются после сбоев машин и процессов.
  • Ray разработан независимо от языка и имеет предварительную поддержку Java.

Более соответствующие ссылки находятся ниже.

Чтобы узнать больше о том, как компании используют Ray для масштабирования и ускорения своих приложений Python в производстве, присоединяйтесь к предстоящему (бесплатному) Ray Summit!

.

17,1. subprocess - Управление подпроцессами - документация Python 2.7.18

Модуль подпроцесса позволяет создавать новые процессы, подключаться к их каналы ввода / вывода / ошибок и получить их коды возврата. Этот модуль предназначен для заменить несколько старых модулей и функций:

 os.system os.spawn * os.popen * popen2. * команды. * 

Информация о том, как этот модуль может быть использован для замены старого функции можно найти в разделе замены подпроцессов.

См. Также

Пользователям

POSIX (Linux, BSD и т. Д.) Настоятельно рекомендуется установить и используйте гораздо более свежий модуль subprocess32 вместо версия, включенная в python 2.7. Это капля на замену лучшее поведение во многих ситуациях.

PEP 324 - PEP, предлагающий модуль подпроцесса

17.1.1. Использование подпроцесса Модуль

Рекомендуемый способ запуска подпроцессов - использовать следующие удобные функции.Для более сложных случаев использования, когда они не Для удовлетворения ваших потребностей используйте базовый интерфейс Popen .

подпроцесс. вызов ( args , * , stdin = None , stdout = None , stderr = None , shell = False )

Запустить команду, описанную в args . Подождите, пока команда завершится, затем вернуть атрибут возврата .

Приведенные выше аргументы являются лишь наиболее распространенными, описанными ниже. в часто используемых аргументах (отсюда несколько странные обозначения в сокращенная подпись).Полная сигнатура функции такая же, как конструктора Popen - эта функция передает все предоставляет аргументы напрямую через этот интерфейс.

Примеры:

 >>> subprocess.call (["ls", "-l"]) 0 >>> subprocess.call ("выход 1", оболочка = True) 1 

Примечание

Не используйте stdout = PIPE или stderr = PIPE с этой функцией поскольку это может привести к взаимной блокировке на основе выходного объема дочернего процесса. Используйте Popen с методом communication () , когда вы нужны трубы.

подпроцесс. check_call ( args , * , stdin = None , stdout = None , stderr = None , shell = False )

Выполнить команду с аргументами. Подождите, пока команда завершится. Если возврат код был равен нулю, затем вернул, иначе вызовет CalledProcessError . В CalledProcessError Объект будет иметь код возврата в код возврата атрибут.

Приведенные выше аргументы являются лишь наиболее распространенными, описанными ниже. в часто используемых аргументах (отсюда несколько странные обозначения в сокращенная подпись). Полная сигнатура функции такая же, как конструктора Popen - эта функция передает все предоставляет аргументы напрямую через этот интерфейс.

Примеры:

 >>> subprocess.check_call (["ls", "-l"]) 0 >>> subprocess.check_call ("выход 1", оболочка = True) Отслеживание (последний вызов последний): ... subprocess.CalledProcessError: Команда 'exit 1' вернула ненулевой статус выхода 1 

Примечание

Не используйте stdout = PIPE или stderr = PIPE с этой функцией поскольку это может привести к взаимной блокировке на основе выходного объема дочернего процесса. Используйте Popen с методом communication () , когда вы нужны трубы.

подпроцесс. check_output ( args , * , stdin = None , stderr = None , shell = False , universal_newlines = False )

Выполнить команду с аргументами и вернуть ее вывод в виде байтовой строки.

Если код возврата был ненулевым, вызывается CalledProcessError . В CalledProcessError Объект будет иметь код возврата в атрибут возврата и любой вывод в выходной атрибут .

Приведенные выше аргументы являются лишь наиболее распространенными, описанными ниже. в часто используемых аргументах (отсюда несколько странные обозначения в сокращенная подпись). Полная сигнатура функции в основном то же, что и конструктор Popen , за исключением того, что stdout не разрешено, так как используется внутри компании.Все остальные предоставленные аргументы передается непосредственно в конструктор Popen .

Примеры:

 >>> subprocess.check_output (["эхо", "Привет, мир!"]) "Привет, мир! \ N" >>> subprocess.check_output ("выход 1", оболочка = True) Отслеживание (последний вызов последний): ... subprocess.CalledProcessError: Команда 'exit 1' вернула ненулевой статус выхода 1 

Чтобы также зафиксировать стандартную ошибку в результате, используйте stderr = subprocess.STDOUT :

.Подпроцесс

- Управление подпроцессами - Документация по Python 3.8.6rc1

Выполните команду, описанную в args . Подождите, пока команда завершится, затем вернуть экземпляр CompletedProcess .

Приведенные выше аргументы являются лишь наиболее распространенными, описанными ниже. в часто используемых аргументах (отсюда и использование нотации только с ключевыми словами в сокращенной подписи). Полная сигнатура функции в основном такой же, как у конструктора Popen - большинство аргументов эта функция передается этому интерфейсу.( тайм-аут , вход , проверьте , а capture_output - нет.)

Если capture_output истинно, будут захвачены stdout и stderr. При использовании внутренний объект Popen автоматически создается с stdout = PIPE и stderr = PIPE . Аргументы stdout и stderr могут не может поставляться одновременно с capture_output . Если вы хотите запечатлеть и объедините оба потока в один, используйте stdout = PIPE и stderr = STDOUT вместо capture_output .

Таймаут передается в Popen.communicate () . Если таймаут истекает, дочерний процесс будет убит и будет ждать. В TimeoutExpired исключение будет повторно вызвано после дочернего процесса закончился.

Входной аргумент передается в Popen.communicate () и, следовательно, в stdin подпроцесса. Если используется, это должна быть последовательность байтов или строка, если кодировка или ошибок указано или текст верно.когда используется внутренний объект Popen автоматически создается с stdin = PIPE , и аргумент stdin также не может использоваться.

Если проверка истинна, и процесс завершается с ненулевым кодом выхода, CalledProcessError Возникает исключение . Атрибуты этого исключение содержат аргументы, код выхода, а также stdout и stderr, если они были захвачены.

Если указано кодирование или ошибок , или текст истинно, файловые объекты для stdin, stdout и stderr открываются в текстовом режиме с помощью указано кодирование и ошибок или io.TextIOWrapper по умолчанию. Аргумент universal_newlines эквивалентен тексту и предоставляется для обратной совместимости. По умолчанию файловые объекты открываются в двоичном режиме.

Если env не равно None , это должно быть отображение, определяющее среду переменные для нового процесса; они используются вместо значений по умолчанию поведение наследования среды текущего процесса. Передается напрямую к Popen .

Примеры:

 >>> подпроцесс.run (["ls", "-l"]) # не записывает вывод CompletedProcess (args = ['ls', '-l'], returncode = 0) >>> subprocess.run ("exit 1", shell = True, check = True) Отслеживание (последний вызов последний): ... subprocess.CalledProcessError: Команда 'exit 1' вернула ненулевой статус выхода 1 >>> subprocess.run (["ls", "-l", "/ dev / null"], capture_output = True) CompletedProcess (args = ['ls', '-l', '/ dev / null'], returncode = 0, stdout = b'crw-rw-rw- 1 root root 1, 3 января 23 16:23 / dev / null \ n ', stderr = b' ') 

Изменено в версии 3.6: Добавлено кодирования и ошибок параметров

Изменено в версии 3.7: Добавлен параметр text , как более понятный псевдоним universal_newlines . Добавлен параметр capture_output .

.

Смотрите также