Aragaer
и я сказал - "ну сделать мелкие треды, каждый из которых ждет свой источник, а события засовывает в нормальный канал, который мэйнтред уже через селект/полл ждет"
Oleg
мм, наверно это можно как-то сделать, объединив два дескриптора в один file-like object
А если у меня есть процесс, в который мне нужно stdin передать, чтобы процесс с него читал - а я в него писал. И stdout, чтобы процесс в него писал, а я с него читал
Aragaer
делаешь два пайпа и перевязываешь как надо, да
Aragaer
но это будет четыре разных файловых дескриптора
Aragaer
собственно два у тебя и два у него
Aragaer
ты можешь засунуть два своих в buffered rw pair, если хочется
Oleg
но это будет четыре разных файловых дескриптора
Ну вот я их четыре и попытался сделать, только на одном пайпе) Понял, сейчас попробую, пока решение в голове сразу не появилось
Aragaer
ща, секунду
Oleg
ты можешь засунуть два своих в buffered rw pair, если хочется
Попробую на пайпах пока, мне полезнее будет понять, как это работает)
Aragaer
короче есть мои модули yet-another-io-channels и runner. Первый дает абстракцию над пайпами и сокетами (и как раз это один "канал" в обе стороны), а второй его использует для связи с запущенными процессами
Aragaer
yet-another-runner
Aragaer
https://github.com/aragaer/runner и https://github.com/aragaer/channels
Aragaer
в раннере есть примеры использования
Aragaer
ну и понятно можно исходники посмотреть
Aragaer
правда мои channels не работают под виндой, потому что мне просто не на чем проверить и запилить соответствующий код 8)
Aragaer
да, модули есть на pypi, можно их ставить
Aragaer
https://pypi.org/project/yet-another-io-channels-library/ и https://pypi.org/project/yet-another-runner/
Aragaer
https://github.com/aragaer/channels/blob/master/channels/testing.py - ну и кстати вот как раз использование os.pipe
Aragaer
и "объединение" четырех дескрипторов в два двунаправленных канала
Oleg
и "объединение" четырех дескрипторов в два двунаправленных канала
конструктор PipeChanel принимает на вход дескрипторы?
Aragaer
да, номера дескрипторов - целые числа. Такие же, как возвращает os.pipe
Oleg
да, номера дескрипторов - целые числа. Такие же, как возвращает os.pipe
https://github.com/aragaer/channels/blob/master/channels/channel.py#L83 Эти штуки для неблокирующей операции чтения?
Aragaer
да
Oleg
да
А они только для unix, по ходу, работают(
Aragaer
ну да, я же сказал
Aragaer
https://github.com/aragaer/channels/issues/1
Aragaer
вот я даже сам завел issue, потому что у меня нет винды, чтобы это сделать
Oleg
вот я даже сам завел issue, потому что у меня нет винды, чтобы это сделать
Если fcntl только делает неблокирующее чтение - то можно отказаться в пользу select
Oleg
Я попробую использовать на винде, когда загружусь под ней)
Fᴏʀᴅᴇɴ
я могу одновременно задать тип переменной и дефолтное значение? типо def foo(bar=10:int)
Il
Тут можно тупые вопросы задавать?
Fᴏʀᴅᴇɴ
Il
Что тут не так?
Il
Fᴏʀᴅᴇɴ
ну и ? цикл пройдет и все
Oleg
@ru_python_beginers
Fᴏʀᴅᴇɴ
Fᴏʀᴅᴇɴ
def foo(bar: int = 10)
о, збс, спасибо
Aragaer
ну там используется poll, да. На винде работать не будет, потому что на винде просто не прокатит import fcntl. Надо переписать код, чтобы для юниксов использовалось fcntl, а для винды msvcrt или как оно там
Fᴏʀᴅᴇɴ
Область видимости в Python python-scripts.com Python содержит оператор global. Это ключевое слово Python. Оператор global объявляет переменную доступной для блока кода, следующим за оператором.
Fᴏʀᴅᴇɴ
Ошибки есть
я дал ссылку
Oleg
А почему это плохая ссылка?
Oleg
global - плохой тон
Ну знать то всё равно надо
Slam!
Ну знать то всё равно надо
Знать надо, конечно, но не использовать в качестве простого решения проблемы
Slam!
Эта ссылка была отправлена как решение проблемы
Tishka17
+
Il
Спасибо
Il
Il
Так работает
Slam!
👍🌝
Oleg
👍🌝
Блин)))
Il
Мне для более сложной задачи понять как это работает
Oleg
Проксимов
Ехал глобал через глобал, видит глобал - в коде глобал. Сунуг глобал в глобал глобал, глобал глобал, глобал, глобал
Slam!
def pri(a, b): # any code pri(a, b)
как прекрасно код писать за другого 🌝
Il
def pri(a, b): # any code pri(a, b)
У меня 6 переменных
Oleg
У меня 6 переменных
Ну так делай все 6 переменных, какие проблемы?
Oleg
длинные и большие
Это ещё мало)
Mikhail
длинные и большие
передавай тьюпл
Il
Одно белое пятно
Tishka17
Никогда не юзай глобальные переменные
Проксимов
Исторический момент
Slam!
Slam!
приехали
Проксимов
banteg
eval и global под запретом в @ru_python
Никогда.
с чего бы это?