Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

Асинхронное программирование

30.05.2021, 21:10. Показов 2117. Ответов 15

Студворк — интернет-сервис помощи студентам
Не всегда включаюсь в тему асинхронного программирования, рассказали бы в краткой форме, достаточной для 2-3 минутного ответа на вопрос, в чем отличие потоков от процессов, да и как вообще обстоят дела в python с асинхронным программированием? Чем нас ограничивает GIL, в каких случаях применяется модуль threading, да и вообще нужна многопоточность на python, если можно все решить применением правильного алгоритма?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.05.2021, 21:10
Ответы с готовыми решениями:

Асинхронное программирование в Python
Доброго времени суток. Столкнулся с проблемой что в коде вызывается функция которая ждёт условные 60 секунд, а после неё код эти же...

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

Асинхронное обновление QListWidget
Имеется код для демонстрации проблемы: #!/usr/bin/env python3 import sys import time from PyQt5.QtCore import QTimer from...

15
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
30.05.2021, 21:40
Лучший ответ Сообщение было отмечено AlexMarkov как решение

Решение

так как ответ 2-3 минутный то в подробности не вдаюсь:

Цитата Сообщение от AlexMarkov Посмотреть сообщение
Чем нас ограничивает GIL
гил гарантирует что в любой момент времени у нас работает ровно 1 поток (thread), почему если мы хотим одновременно считать какие-нибудь матрицы то ГИЛ нам помешает, так как считаться будет то одна то вторая (то 1 поток то другой работает). Но ГИЛ НЕ ограничивает любые ИО задачи типа запроса по сети или обращение к диску, то есть распараллелить запросы к сайтам вполне можно. Кроме того, ГИЛ НЕ гарантирует синхронизации между потоками, ее надо обеспечивать.

Цитата Сообщение от AlexMarkov Посмотреть сообщение
в каких случаях применяется модуль threading
когда делаем ИО запросы или нам плевать на то что ГИЛ будет давать работать то одному потоку то второму

Цитата Сообщение от AlexMarkov Посмотреть сообщение
нужна многопоточность на python
нужна. Попробуй ка опросить 100 сайтов или там датчиком последовательно и потом параллельно на 10 скажем потоках. Что впрочем не отменяет необходимости понимать алгоритмы и структуры данных.



Цитата Сообщение от AlexMarkov Посмотреть сообщение
в чем отличие потоков от процессов
потоки работают в рамках одного интерпретатора, у них общая память, они могут без проблем обмениваться переменнымии и писать в одну коллекцию, но над ними нависает ГИЛ и их надо синхронизировать чтобы не было локов и гонок.

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


Цитата Сообщение от AlexMarkov Посмотреть сообщение
как вообще обстоят дела в python с асинхронным программированием?
хорошо обстоят, вошло в моду. Асинхронка работает вообще в 1 потоке, ГИЛ ее не трогает по этой причине, но у нее свои особенности, она сонована на постоянной передаче работы между участниками (асинхронными функциями), использует неблокирующие вызовы.

Пример - сеанс одновременной игры в шахматы, когда пришло 10 человек и ждут соперников. Вот когда зашло 2-3-5 гроссмейтеров и играют одновременно это распараллеливание. Когда вошел 1 гроссмейстер и быстро делает ход, переходя от одного участника к другому не дожидаясь ответного хода -это асинхронка.
5
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
30.05.2021, 21:55  [ТС]
Welemir1, ИО запросы?
0
30.05.2021, 21:55

Не по теме:

Цитата Сообщение от AlexMarkov Посмотреть сообщение
ИО запросы?
IO - Input/Output (ввод/вывод).

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
30.05.2021, 21:56
input -output
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
30.05.2021, 22:10  [ТС]
Добавлено через 2 минуты
Welemir1, за счёт чего и как обеспечивается синхронизация между потоками?

Добавлено через 10 минут
Блокировка/замки или другая терминология, с чего начать, какие примеры, задачи, статьи?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 08:26
Цитата Сообщение от AlexMarkov Посмотреть сообщение
за счёт чего и как обеспечивается синхронизация между потоками?
блокировками как раз, а лучше еще использовать пул потоков или пул процессов, там уже все под капотом реализовано, знай только раздавай таски для распараллеливания.

Цитата Сообщение от AlexMarkov Посмотреть сообщение
с чего начать, какие примеры, задачи, статьи?
с документации и книг классиков.
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
31.05.2021, 08:51  [ТС]
Welemir1, по конкретнее пожалуйста о книгах классиков, я записываю
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 09:21
Mark Lutz "Programming Python" 4 edition
"Fluent Python" Luciano Ramalho
Дэвид Бизли "Python Книга рецептов"
1
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708
31.05.2021, 09:58  [ТС]
Welemir1, "ети книжки" мы знаем, может что-то есть по прогматичнее и попрактичнее по данной теме.
Я про раскрытие именно данной тематики...В идеальном варианте, книга так и должна называться).
В книге Бизли одна глава на 40-50 страниц, Лутц тоже на 100-120 страницах, ай ладно, Лутца прочитаю ещё раз,
ну этого точно не достаточно для понимания и решения практических задач о которых Вы говорили выше...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 10:29
AlexMarkov, так там тебе старт, дальше хватаешь в руки доку и начинаешь эксперименты.

Добавлено через 2 минуты
"Using Asyncio in Python". Caleb Hattingh
1
31.05.2021, 10:42

Не по теме:

Цитата Сообщение от Welemir1 Посмотреть сообщение
а лучше еще использовать пул потоков или пул процессов
Вроде как в Python'е идет продвижение идеи субинтерпретаторов, как альтернатива тредпула с вечнонедовольным GIL'ом. В каких-нибудь проектах они используются?

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 10:58
Arsegg, ну я свежее видео от Гвидо конечно смотрел, но про что в данном случае речь не совсем уловил. По сути мультипроцессинг это и есть отдельные параллельно запущенные интерпретаторы, у которых общего нет ничего, если специально не стараться. Такое да- используется.

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

Если у тебя комп как у вашего покорного слуги и хочется загрузить все 10 ядрышек рассчетами то мультипроцессинг, если надо всего лишь запросиками популять в авито, то асинкио или мультитрединг.
1
31.05.2021, 11:37

Не по теме:

Welemir1, там именно в рамках одного процесса запускаются интерпретаторы, а они, как известно, не лочатся GIL'ом и работают "параллельно".
P. S. PEP 554.

0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
31.05.2021, 11:46
Arsegg, не пробовал, не видел, подождем релиза 3.10 -увидим.
0
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,536
31.05.2021, 16:57
Цитата Сообщение от AlexMarkov Посмотреть сообщение
по прогматичнее и попрактичнее по данной теме
смотрите примеры (последний), пишите свой код - засекайте время... тайминги вам всё покажут...
только asyncio используйте совместно с асинхронной библиотекой - aiohttp или aiofiles ! иначе бесполезно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.05.2021, 16:57
Помогаю со студенческими работами здесь

Криптография, многопоточное программирование, сетевое программирование
Не знаю, с чего начать, подскажите: В этом задании необходимо реализовать клиент-серверное приложение, позволяющее суммировать...

Асинхронное программирование
Необходимо реализовать асинхронное выполнение метода на основе разработанного делегата (создать делегат) с возможностью передачи параметров...

Асинхронное программирование
Здравствуйте. Написал класс для работа с API сайта, и он работает, что крайне странно, потому что в асинхронном программировании я пока...

Асинхронное программирование
Всем привет) Стоит такая проблема: Есть приложение WinForm, с одной из форм запускается метод по событию кнопки. Реализация метода...

Асинхронное программирование.
Хотелось бы узнать в чем разница, ознакомился с 2умя способами асинхронного программирования: 1) используя System.Threading; более...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru