Многопоточное программирование

Содержание

Слайд 2

Процесс? Процесс – программа, которая запущена в ОП компьютера. Характеристики процесса:

Процесс?

Процесс – программа, которая запущена в ОП компьютера.
Характеристики процесса:
Идентификатор процесса PID
Объем

ОП
Стек (стек используется для вызова функций, для создания локальных переменных этих функций)
Список открытых файлов
Ввод/вывод
Слайд 3

Слайд 4

Слайд 5

Слайд 6

Слайд 7

Слайд 8

Слайд 9

ПОТОКИ Поток напоминает процесс У потока своя последовательность инструкции Каждый поток

ПОТОКИ

Поток напоминает процесс
У потока своя последовательность инструкции
Каждый поток имеет собственный стек
Все

потоки выполняются в рамках процесса(делят его память и ресурсы)
Управлением выполнением потоков занимается ОС
Потоки в питоне имеют свои ограничения
Слайд 10

Много поточность Способность процесса выполнять несколько потоков параллельно, называется многопоточностью.

Много поточность

Способность процесса выполнять несколько потоков параллельно, называется многопоточностью.

Слайд 11

Слайд 12

Python предлагает два модуля для реализации threads в программах. модуль модуль

Python предлагает два модуля для реализации threads в программах.
модуль
модуль .
модуль

является устаревшим в Python 3 и переименован в модуль <_thread> для обратной совместимости.
Основное различие между этими двумя модулями является то, что модуль реализует нить как функцию. С другой стороны, модуль предлагает объектно-ориентированный подход для обеспечения возможности создания потоков.
Слайд 13

имеет следующие методы: Модуль также представляет класс

имеет следующие методы:

Модуль также представляет класс

Слайд 14

Слайд 15

Создание класса потоков и объектов для печати текущей даты

Создание класса потоков и объектов для печати текущей даты

Слайд 16

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

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

синхронизировать потоки. Блокировка требуется для управления доступом к общим ресурсам для предотвращения повреждения или непринятых данных.

Вы можете вызвать метод Lock(), чтобы применять блокировки, он возвращает новый объект блокировки. Затем, вы можете вызвать метод acquire(blocking) объекта блокировки для обеспечения синхронного выполнения потоков.

Слайд 17

Слайд 18

Очередь

Очередь

Слайд 19

Поиск слов в файлах

Поиск слов
в файлах

Слайд 20

Класс RLock - вариант простой блокировки, которая блокирует поток только в

Класс RLock - вариант простой блокировки, которая блокирует поток только в

том случае, если блокировка захвачены другим потоком

если требуется использовать несколько условных переменных для синхронизации доступа к одному ресурсу.

Слайд 21

Семафоры Семафоры - более сложный и совершенный механизм блокировок. Внутри семафора

Семафоры

Семафоры - более сложный и совершенный механизм блокировок. Внутри семафора -

счетчик, в отличии от объекта блокировки, в которой просто флажок.

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

Слайд 22

GIL GIL – глобальная блокировка интерпретатора(GLOBAL INTERPRETER LOCK) Эта штука позволяет

GIL

GIL – глобальная блокировка интерпретатора(GLOBAL INTERPRETER LOCK)

Эта штука позволяет одновременно запускать

только один питоновский поток — остальные обязаны ждать переключения GIL на них.
Слайд 23