Maxx
имелся в виду один thread на уровне ОС, а не lua-вский
Мерль
блииин... я ж как раз и говорю, что параллельности нет! =) она мнимая
Это не имеет отношения к вытесняющей многозадачности Как раз луа корутины могут блокировать (и блокируют) всю программу Это скорее похоже на кооперативную, но тоже не она
Maxx
"но если запрос на поиск слать из С-обвязки в другом потоке" писал же уже
Maxx
или "чукча не читатель"? =)
Maxx
ну, я не воспринимаю (пока) луа отдельно =)
Snusmumriken
В корутинах есть некоторый смысл.
Maxx
для меня это эмбедед язык, работающий в связке. конечно, это не верно.
Snusmumriken
Применение корутин. https://www.lua.org/pil/9.4.html
Maxx
она сработала очень быстро и передала это "очень быстро" другой корутине. не воспринимай эту корутину как единственную
Maxx
причём, передала - на полпути, не закончив свою задачу, а лишь прервавшись для получения новых данных например
Snusmumriken
Карочи, корутины применяются для реактивного программирования и подобия функциональщины с ленивыми вычислениями, или для создания цепочек-корутин. В некоторых случаях ускоряют процесс.
Maxx
ты про "вытесняющую многозадачность" читал? =)
Maxx
угу, вытесняющая многозадачность - это вообще не многозадачность
Snusmumriken
Чувак, в питоне тоже нет тру-потоков.
Мерль
Мы запустили внешний процесс - > отдаём время для другиъ корутин -> просыпаемся, проверяем результат
Мерль
угу, вытесняющая многозадачность - это вообще не многозадачность
Это нее имеет отношения к втыесняющей многозадачности Ваапще
Snusmumriken
Тру-потоки в луа достигаются модификацией хост-программы. В результате, ты посылаешь хосту код проги в виде строки, тот создаёт новый luastate и гоняет переданный код в другом тру-потоке.
Snusmumriken
А то.
Snusmumriken
Нет.
Мерль
Конечно (
Snusmumriken
В фреймворке который я использую, потоки именно такие.
Мерль
В теории можно реализовать что-то типа труъ зелёных потоков как в Go но это надо переписывать рантайм Полностью Хотя есть уже реализация на go В принципе..... У меня есть задумка
Мерль
Хотя нет Всё равно надо переписывать
Maxx
Это нее имеет отношения к втыесняющей многозадачности Ваапще
если ещё раз прочитать моё замечание "только прерывает исполнение не ОС, а сама сопрограмма", то не вижу, в чём разница =)
Мерль
если ещё раз прочитать моё замечание "только прерывает исполнение не ОС, а сама сопрограмма", то не вижу, в чём разница =)
Разница в том, что в луа ни рантайм ни "родитель" не может прервать выполнение корутины. Он может только ждать, пока она отдаст управление породившеё задаче с помощью yield Если ты в среде с вытесняющей многозадачностью, то текущая задача может быть прервана в любой момент и выполнение продолжится в другой точке
Мерль
Если ты зделаешь в корутине вечный цикл без yield, то ты заблокируешь всю программу Если ты запустишь цикл в среде с вытесняющей многозадачностью, то всё будет бежать асинхронно
Maxx
эээ... а я что написал? =)
Мерль
эээ... а я что написал? =)
Ты написал "только прерывает исполнение не ОС, а сама сопрограмма" то есть управление отдаёт корутина Но это, блин, принципиальное отличие В этом и состоит отличие вытесняющей многозадачности и кооперативной
Мерль
:3
Maxx
нее... кооперативная - это много потоков, по задаче на поток, всё параллельно. а вытесняющая - это один поток, разделяемый между разными задачами, от параллельности - только видимость, т.е. реальной параллельноси нет.
Maxx
да не, без обид конечно, но я до сих пор не вижу, где б ты указал на противоречие :)
Maxx
т.е. я вижу, что ты упёрся в термин и не можешь или не хочешь сделать одного шага в сторону :)
Мерль
да не, без обид конечно, но я до сих пор не вижу, где б ты указал на противоречие :)
Противоречие в том, что вытесняющая многозадачность - это прерывание нити снаружи средой выполнения. А кооперативная - это прерывание выполнения самой нитью Корутина прерывается изнутри - и ты утверждаешь, что это вытесняющая многозадачность
Maxx
но ведь я ж именно так и написал: это КАК вытесняющая многозадачность, ТОЛЬКО прерывание идёт не от ОС, а от самой корутины. =)
Мерль
но ведь я ж именно так и написал: это КАК вытесняющая многозадачность, ТОЛЬКО прерывание идёт не от ОС, а от самой корутины. =)
Точно А если бы у бабушки были бы яйца, то она была бы дедушкой Ну и меч без лезвия - это как меч, только без лезвия И т.д. )
Maxx
ну да. но ведь задачей стояло не дать формальное определение, а как-то по-другому показать смысл, чтоб The Dude разобрался
Мерль
нет, лучше так: смерть - это как жизнь, просто не дышишь и разлагаешься
Maxx
именно =)
Мерль
Впрочем он всё прекрасно понял и без нас хехехе
Maxx
даёшь отправную точку поближе к конечной, а затем одним двумя штрихами указываешь правильный путь
Мерль
Была статья, что то вроде "Пишем простую систему учёта" недавно Там упоминался этот чатик
Maxx
была ещё другая статья на гиктаймсе. там тоже упоминался. вторая волна - оттуда
Мерль
Нет
Мерль
?
Snusmumriken
Хм. Можно сделать класс-обёртку вокруг любой userdata. Это проще всего. Я так с сишными структурами работал. Ну там, a = {} a.obj = ffi.new(struct) function a:iterator() bla-bla end function a:getValue(...) end И т.д, с метатаблицами и прочим. Сишные методы, правда, приходится дублировать. Кстати, с итераторами к многомерным массивам есть смешная история. Вместо key высылается табличка типа {10, 20, 30}, которая определяет текущие положения по i, j, k, ... -измерениям, а вместо value - текущее значение. Это самое рациональное имхо.
Anonymous
Где чаты с java?
Snusmumriken
Может загуглишь?
Anonymous
На кой же вы мне тогда?
Snusmumriken
Вот именно, зачем ты здесь? :3
Anonymous
В гости пришел.
Snusmumriken
Молодец. А я, обычно, людей спрашиваю в тех случаях, когда пол часа гугленья не помогло. Не дергаю людей по пустякам. Это тактично.
Anonymous
Да, прикольно.
Anonymous
Так чем вы тут занимаетесь?
Snusmumriken
Хернёй всякой. Можешь прочитать выше. Предыдущие сообщения доступны для всех желающих.
Anonymous
Хорошо. Чем занимаешься? Кто ты?
Snusmumriken
Я делаю игрульки на чистой lua. Сетевой код, либы коллизий в 2d, физика, шейдеры, парсеры, либы для работы с UTF8, либы на сишке, которые можно подключить к lua (DLL/so), огромную кучу всякой херни. Я - студент который вчера защитил диплом про ПО, написанное на lua, живу в Москве, неофициально работаю приходящим админом в паре офисов. Хобби - плотничество, гитарка/укулеле, изготовление ништяков из кожи. Достаточно полная информация?
Anonymous
Вполне.
Anonymous
@jvmchat
Пасиба.
Snusmumriken
Хм. Только сейчас, спустя три года кодинга, обнаружил, что я не могу сделать так: t = {10, 20, 30} for i, v in ipairs(t) do v = 10 end, Из-за того что v передается не как ссылка на значение, а как будто создается локальная переменная. Всю дорогу работал с хешами/вложенными списки и тупо не замечал. Срочно переделал итератор по ffi-структурам, чтобы тот вместо v-значения возвращал функцию, с помощью которой можно узнать текущее значение многомерного массива или задать текущее значение. Со структурами проще. Не надо передавать конкретное значение, только ссылку на элемент структуры.
Oleg
Ребят, никто не в курсе про подобные группки по python
Alex
в курсе.
Oleg
Ooo
Alex
https://telegram.me/ru_python https://telegram.me/python_beginners https://telegram.me/rudepython
Oleg
Спасибо
Kirill
ребят
Kirill
как кошерно объединить циклы? for f in paths.files(params.train_images_path, 'JPEG') do table.insert(image_names, f) end for f in paths.files(params.train_images_path, 'jpg') do table.insert(image_names, f) end
Kirill
torch paths
Kirill
for image_name in paths.files("examples/", "jpg") do ..> print (image_name) ..> end girlyand.jpg tubingen.jpg moscow.jpg homer_low.jpg anna.jpg
Kirill
paths.files("examples/", "jpg")+paths.files("examples/","JPG")
Kirill
вот так не работает
Kirill
на луа
Vladimir
если второй параметр регэксп, то почему не использовать что-нибудь вроде paths.files("examples/", ".*\.jpe?g$")
Vladimir
?