jenya7 0 18 октября, 2022 Опубликовано 18 октября, 2022 (изменено) · Жалоба Я могу сделать так python3 my_script.py 'aaa' 123 'bbb' и в самом скрипте if len(sys.argv) < 5: print("Missing arguments") exit(1) else: command = sys.argv[1] loc_ip = sys.argv[2] send_ip = sys.argv[3] port = int(sys.argv[4]) но по сути я могу распарсить или строку или цифру. а если я хочу передать указатель на массив? или структуру в качестве аргумента? такое возможно? уточню вопрос. я запускаю скрипт из среды Qt QString PROC_Run(QString proc_name, QStringList proc_args) { QProcess proc; QString out; proc.start(proc_name, proc_args); proc.waitForFinished(-1); out = proc.readAll(); return out; } Можно сделать что передаваемая структура будет общим объектом между Qt и Python? Изменено 18 октября, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SSerge 6 18 октября, 2022 Опубликовано 18 октября, 2022 · Жалоба 7 hours ago, jenya7 said: но по сути я могу распарсить или строку или цифру. а если я хочу передать указатель на массив? или структуру в качестве аргумента? такое возможно? Ваша программа на Qt и скрипт это два разных процесса, у каждого своё адресное пространство и другому процессу оно (без грязных хаков) недоступно. https://doc.qt.io/qt-6/qprocess.html Есть доступ к stdin, stdout, stderr запущенного процесса. Ну и другие средства межпроцессной коммуникации (IPC) по вкусу. 7 hours ago, jenya7 said: Можно сделать что передаваемая структура будет общим объектом между Qt и Python? Если очень хочется. Можно встроить интерпретатор питона в свою программу и/или из питона вызывать функции написанные на С/С++. https://docs.python.org/3/extending/index.html https://docs.python.org/3/extending/embedding.html Но этим стоит заниматься только если иначе никак. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 18 октября, 2022 Опубликовано 18 октября, 2022 · Жалоба On 10/18/2022 at 4:08 PM, SSerge said: Можно встроить интерпретатор питона в свою программу и/или из питона вызывать функции написанные на С/С++. https://docs.python.org/3/extending/index.html https://docs.python.org/3/extending/embedding.html Но этим стоит заниматься только если иначе никак. спасибо. это стоит изучить. скрипт как скрипт меня устраивает, мне бы только передавать объекты в него созданные в Qt. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yes 7 18 октября, 2022 Опубликовано 18 октября, 2022 · Жалоба есть подход через shared memory (в линуксе пользовался, но наверно и в винде какой-то аналог есть) но если в С немного повозившись с файлами и ioctl получаешь указатель памяти, с которым вобщем-то много чего можно делать то как с этим быть в питоне (где нет указателей, а mmap есть) - я не знаю. но, в любом случае - "быстрые файлы", которые передаются через общую память в питоне, могут помочь ------------- а совсем просто - в линуксе есть фифо|pipe mkfifo имя это для именованой. соответственно в него один процесс пишет, другой читает (просто как в файл с именем) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 18 октября, 2022 Опубликовано 18 октября, 2022 · Жалоба 9 hours ago, jenya7 said: но по сути я могу распарсить или строку или цифру. а если я хочу передать указатель на массив? или структуру в качестве аргумента? такое возможно? Нет, но вы можете сериализовать структуру или массив в JSON, и передать его в качестве текстового параметра. Со стороны Python сделать обратную операцию. И Qt и Python прекрасно понимают JSON 51 minutes ago, jenya7 said: мне бы только передавать объекты в него созданные в Qt. Именно объекты невозможно вообще. А чем вас не устраивает родной JavaScript (вместо Python), который от рождения есть в Qt? Тем более, что в отличие от Python он быстрее, потому что он JIT. И объекты от Qt туда встраиваются автоматом Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 19 октября, 2022 Опубликовано 19 октября, 2022 (изменено) · Жалоба On 10/18/2022 at 5:17 PM, xvr said: Нет, но вы можете сериализовать структуру или массив в JSON, и передать его в качестве текстового параметра. Со стороны Python сделать обратную операцию. И Qt и Python прекрасно понимают JSON Именно объекты невозможно вообще. А чем вас не устраивает родной JavaScript (вместо Python), который от рождения есть в Qt? Тем более, что в отличие от Python он быстрее, потому что он JIT. И объекты от Qt туда встраиваются автоматом не знал. можно глянуть в сторону JavaScript. правда у Python сегодня мощней функционал, все готово и image processing и machine learning и куча других библиотек из коробки. Питон сегодня нереально прокачан. а ну и самое главное - JavaScript не даст выйти в сеть. Изменено 19 октября, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xvr 12 19 октября, 2022 Опубликовано 19 октября, 2022 · Жалоба 4 hours ago, jenya7 said: правда у Python сегодня мощней функционал, все готово и image processing и machine learning и куча других библиотек из коробки. Это вопрос необходимости - вам это всё реально нужно? 4 hours ago, jenya7 said: а ну и самое главное - JavaScript не даст выйти в сеть. Прочему не даст? У него есть прямой выход в внутренности Qt, а оттуда уже куда угодно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 октября, 2022 Опубликовано 23 октября, 2022 (изменено) · Жалоба ну вот. может же когда хочет from ctypes import * libc = CDLL("mylib.so") но! нужно создать файл so: g++ -fPIC -shared -o mylib.so mylib.o и тут при загрузке получаю Quote mylib.so: undefined symbol: _ZTI9QRunnable то есть Питон не видит внешние объекты используемве в mylib.so. а как создать mylib.so файл рекурсивно, включая все используемые объекты? Изменено 23 октября, 2022 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Grizzly 0 13 ноября, 2022 Опубликовано 13 ноября, 2022 · Жалоба Есть для подобных целей header only библиотека Pybind11. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться