Giter VIP home page Giter VIP logo

python_questions's Introduction

python_questions

Итератор в Python — объект, реализующий метод next, который возвращает следующий элемент последовательности или выбрасывает исключение StopIteration, если не осталось элементов.

iter

Генератор — это функция, которая умеет возвращать несколько значений по очереди, не храня в памяти весь набор значений.

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

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

Одна из проблем, которую решает GIL, связана с тем, что в многопоточном приложении одновременно несколько потоков могут изменять значение счётчика ссылок. Это может привести к тому, что память очистится неправильно и удалится тот объект, на который ещё существует ссылка.

Но добавление блокировки к нескольким объектам может привести к появлению другой проблемы — взаимоблокировки или deadlocks, которая получается, если блокировка есть более чем на одном объекте. К тому же эта проблема тоже снижала бы производительность из-за многократной установки блокировки.

Состояние гонки — это ошибка проектирования многопоточного приложения, при которой его работа зависит от того, в каком порядке выполняются части кода. Это может произойти при работе с общими объектами между потоками, несмотря на то что GIL позволяет работать только одному потоку в один момент времени. Рассмотрим простой пример обновления счётчика в нескольких потоках.

Файл-дескриптор — это уникальный идентификатор открытого файла в операционной системе.

Что нужно запомнить про процессы и потоки Достоинства процессов в Python: У каждого процесса своя память. Позволяют использовать все доступные ядра процессора. GIL не накладывает ограничения. Есть возможность прервать процесс. Подходит для тяжёлых вычислений. Недостатки процессов в Python: IPC более сложный и имеет большие накладные расходы. Большое потребление памяти. Достоинства потоков в Python: Более легковесные и требуют меньше памяти. Общая память между потоками. Можно запускать в потоках для параллельной работы модули, написанные на C, которые отпускают GIL. Подходят для операций ввода/вывода. Недостатки потоков в Python: GIL не позволяет потокам работать одновременно кроме C модулей, которые отпускают GIL. Нет возможности прервать выполнение потока. Необходимо использовать примитивы синхронизации для работы с общей памятью, чтобы предотвратить «гонку».

python_questions's People

Contributors

mshinkareva avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.