170 похожих чатов

Тишка, ты вот говоришь, что низкоуровневое апи не стоит использовать

(жонглирование лупами, например) - уже в асинкио есть интерфейс, который позволяет абстрагироваться от этого?

17 ответов

28 просмотров

От чего?

Slam!- Автор вопроса

От лупов

Что ты понимаешь под абстрагированием от лупов?

Slam!- Автор вопроса

Начальный уровень разработки асинхронного кода, в рамках которого о лупах думать не приходится. Дёрнул что-то, всё запустилось и работает отлично

Лупами не стоит жонглировать, потому что это создает кучу проблем, потому что куча объектов в асинкайо привязывается (и к тому же незметно) к оперделенному лупу. Тем более, что такое жонглирование не дает никакого выигрыша в чем либо. Не понимаю, причем тут абстрагирвоание от лупов

Slam!- Автор вопроса

Да, полностью согласен, но как бы ты запускал асинхронный энтрипоинт своего приложения?

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

asyncio.run()

Slam!- Автор вопроса

Хорошо. Мне нужно вместе с запуском энтрипоинта запустить две корутины, которые хотел бы прокинуть не в рамках того модуля, где собираюсь запускать энтрипоинт. Как это сделать?

Что значит "прокинуть"?

Slam!- Автор вопроса

Условно говоря, зарегистрировать к выполнению, как это делает create_task

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

Slam!- Автор вопроса

А как таски создать?)

Как обычно

Slam!- Автор вопроса

Если честно, не знаю. Можно пример?

import asyncio async def task1(): pass async def task2(): pass async def entry_point(): pass async def main(): asyncio.create_task(task1()) asyncio.create_task(task2()) await entry_point() if __name__ == '__main__': asyncio.run(main())

Slam!- Автор вопроса

Ух ты. Я два года назад начинал с асинком работать на 3.6 питоне, поэтому приходилось руками доставать текущий луп и класть туда корутины одноименным методом, а ensure_future как-то пролетела мимо глаз. Вопрос про абстрагирование от лупов у меня закрыт. Спасибо)

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта