Alex
у тебя процессинговый сервис?
Alex
или одноразово в cli'шечке запускаешь?
Alex
потому что по хорошему это выглядит так cat wiki.txt | rustwiki | script.py
Alex
надо понять кто у тебя вместо cat'а
Anton
Блять смотри логику полную: - Я качаю викикод страницы с апи википедии - Чтобы распарсить викикод в понятное расту ast дереву в json мне нужен питон скрипт - Я должен получить результат в виде json из викитекста который я должен отдать в питон
Anton
при этом должно все выполнятся быстро, без лишнего оверхэда
Alex
я качаю, это кто? ручками?
Alex
у тебя файл есть? у тебя веб сервис?
Anton
ибо сейчас он парсит и обрабатывает все в течении секунды
Anton
из Command cli
Anton
в то время как сам парсер все обрабатывает в течении 200мс
Alex
если из bash'a то: cat wiki.txt | wiki_to_ast.py | rustshit
Anonymous
я качаю, это кто? ручками?
ну если с апи то можно подразумевать что нет
Alex
Anton
если из bash'a то: cat wiki.txt | wiki_to_ast.py | rustshit
да сейчас почти также и происходит черт
Anton
я создаю в расте файл с кодом
Anton
и потом передаю путь для чтения в питон
Anton
это не оптимизация, оно будет также долго выполнятся
Anton
на данный момент у меня вообще невероятно бредовая идея
Anton
подрять http сервер на питоне, и ему отправлять запросы с кодом
Anton
и потом забирать ответ
vladislav
сорри за оффтоп, но кто юзает evernote, у вас сейчас всё нормально с доступом к их сайту?
Anton
максимально быстро почти без оверхэда
Alex
я создаю в расте файл с кодом
ты определись уже кто для кого работает, питон для раста или раст для питона
Anonymous
поехал что ли
Alex
ничерта не понятно
Anton
ну или совсем ебанутся и сделать все на dbus
Anonymous
http никак не может быть быстрее пайпов и сокетов
Anton
в питоне у меня парсер
Alex
я таки не понял чем тебе очереди не понравились если у тебя одноразовая задача?
Anton
и я ищу максимально эффективный и минимальный по ебле способ как отправлять данные в питон и получать результат в расте
Alex
пускай один в режиме клиента другой в режиме воркера пашет
Anton
я таки не понял чем тебе очереди не понравились если у тебя одноразовая задача?
я уже писал, для очереди мне придется создавать новый потом
Anton
поток
Anton
который будет отправлять и получать результат
Anton
ибо там ивентлуп
Alex
нахера в расте создавать файл если у тебя первым вызывается пейтон?
Alex
ну он смотри ты в расте можешь открыть пайп
Alex
к пейтону, скормить ему буффер и прочесть его stdin
Alex
потом закрыть. Открыть для следующего набора данных.
Anton
нахера в расте создавать файл если у тебя первым вызывается пейтон?
блять я создаю файл чтобы потом его отправить в питон
Alex
https://rustbyexample.com/std_misc/process/pipe.html
Anton
чтобы его путь потом скормить cli для получения результат
Anton
по другому я не знаю как еще сделать
Alex
нахуй тут cli воще
Alex
я те грю заспавнить процесс с пайпом и по пайпу ему передать
Alex
потом прочесть его stdin
Alex
все это в обход явного cli.
Alex
в расте спавнишь процесс пейтон скрепта, кормишь ему в пайп разметку, читаешь его stdin пока процесс не помрет
Anton
я те грю заспавнить процесс с пайпом и по пайпу ему передать
а я и спрашиваю как, из раста заспавнить процесс питона с моим текстом
Alex
в то же время пейтон скрипт при старте читает из пайпа данные, обрабатывает, через print возвращает
Anton
как скормить ему разметку
Anton
как черт подери
Alex
https://rustbyexample.com/std_misc/process/pipe.html
а зачем спрашивать то на что я уже ответил
Alex
а я и спрашиваю как, из раста заспавнить процесс питона с моим текстом
ты не спавнишь процесс пейтона с твоим текстом. Ты спавнишь процесс питона и по пайпу ему кормишь данные.
Anton
а зачем спрашивать то на что я уже ответил
эту хуйню я кидал по этому вопросу буквально 5 минут назад
Anton
но из нее я так и не понял как скормить текст пайпу
Karey
А можно объяснить этот зоопарк? Почему все на питоне не сделать?
Alex
stdin для процесса питона это входящие данные
Anton
Хотя стоп
Anton
понял
Anton
match process.stdin.unwrap().write_all(PANGRAM.as_bytes()) { Err(why) => panic!("couldn't write to wc stdin: {}", why.description()), Ok(_) => println!("sent pangram to wc"), }
Anton
вот так скармливаем
Alex
А можно объяснить этот зоопарк? Почему все на питоне не сделать?
типа на расте нет парсера викиразметки, наверняка по этому
Anton
Так читаем
Anton
match process.stdout.unwrap().read_to_string(&mut s) { Err(why) => panic!("couldn't read wc stdout: {}", why.description()), Ok(_) => print!("wc responded with:\n{}", s), }
Alex
вот так скармливаем
читать документацию это слишком сложна сложна
Karey
Так в чем тогда выигрыш от раста?
Alex
Так в чем тогда выигрыш от раста?
общая логика на расте, парсинг через пейтон либу
Karey
Если самое по идее ресурсоемкое делает питон)
Alex
Если самое по идее ресурсоемкое делает питон)
кто сказал что оно самое ресурсоемкое.
Anton
Так в чем тогда выигрыш от раста?
жрет мало памяти, быстро работает, и все такое
Anton
интеграция напрямую с сишными либами без прослоек
Anton
и прочие ништяки
Karey
Так может сишный парсер взять?
Anton
Если самое по идее ресурсоемкое делает питон)
да вот нифига это не самое ресурсоемкое