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
Alex
Anton
Anton
я создаю в расте файл с кодом
Anton
и потом передаю путь для чтения в питон
Anton
это не оптимизация, оно будет также долго выполнятся
Anton
на данный момент у меня вообще невероятно бредовая идея
Anton
подрять http сервер на питоне, и ему отправлять запросы с кодом
Anton
и потом забирать ответ
vladislav
сорри за оффтоп, но кто юзает evernote, у вас сейчас всё нормально с доступом к их сайту?
Anton
максимально быстро почти без оверхэда
Anonymous
поехал что ли
Alex
ничерта не понятно
Anton
ну или совсем ебанутся и сделать все на dbus
Anonymous
http никак не может быть быстрее пайпов и сокетов
Anton
Anton
в питоне у меня парсер
Alex
я таки не понял чем тебе очереди не понравились если у тебя одноразовая задача?
Anton
и я ищу максимально эффективный и минимальный по ебле способ как отправлять данные в питон и получать результат в расте
Alex
пускай один в режиме клиента другой в режиме воркера пашет
Anton
Anton
поток
Anton
который будет отправлять и получать результат
Anton
ибо там ивентлуп
Alex
нахера в расте создавать файл если у тебя первым вызывается пейтон?
Alex
ну он смотри ты в расте можешь открыть пайп
Alex
к пейтону, скормить ему буффер и прочесть его stdin
Alex
потом закрыть. Открыть для следующего набора данных.
Anton
Alex
https://rustbyexample.com/std_misc/process/pipe.html
Alex
Anton
чтобы его путь потом скормить cli для получения результат
Anton
по другому я не знаю как еще сделать
Alex
нахуй тут cli воще
Alex
я те грю заспавнить процесс с пайпом и по пайпу ему передать
Alex
потом прочесть его stdin
Alex
все это в обход явного cli.
Alex
в расте спавнишь процесс пейтон скрепта, кормишь ему в пайп разметку, читаешь его stdin пока процесс не помрет
Alex
в то же время пейтон скрипт при старте читает из пайпа данные, обрабатывает, через print возвращает
Anton
как скормить ему разметку
Anton
как черт подери
Alex
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),
}
Karey
Так в чем тогда выигрыш от раста?
Anton
Anton
Karey
Если самое по идее ресурсоемкое делает питон)
Alex
Anton
интеграция напрямую с сишными либами без прослоек
Anton
и прочие ништяки
Karey
Так может сишный парсер взять?
Anton