94.31K
Category: programmingprogramming

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

1.

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

2.

Процесс
Процесс – программа, которая запущена в ОП компьютера.
Характеристики процесса:
1. Идентификатор процесса PID
2. Объем ОП
3. Стек (стек используется для вызова функций, для
создания локальных переменных этих функций)
4. Список открытых файлов
5. Ввод/вывод

3.

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

4.

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

5.

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

6.

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

7.

Модуль <threading> также представляет класс <Thread>
<Thread> имеет следующие методы:
Метод
Описание
run()
Это функция точки входа любого потока
start()
Запускает поток
join(time)
Ожидание окончания потока
is_alive()
Проверка активности потока
isDaemon()
Проверка, является ли поток фоновым
getName()
Возвращает имя потока
setName()
Устанавливает имя потока

8.

from threading import Thread
from time import sleep
def test(text):
for i in range(10):
print(text)
sleep(1)
t=Thread(target=test, args=('Test',))
t.start()
t.join()
English     Русский Rules