Я хочу построить CPU с функциями matplotlib. Я хотел бы использовать pypy, но он несовместим с matplotlib. Сам график не требует интенсивного использования ЦП и не требует ускорения. Интересно, есть ли способ вызвать функцию pypy из C-python. Могу ли я (ab) использовать модуль многопроцессорности и сказать set_executable("/.../pypy")
с C-python?Вызов функций pypy из C-python
ответ
Вы можете написать вывод вашего расчета на стандартный вывод и канал, в другую программу, которая считывает данные для построения из стандартного ввода, например, так:
pypy compute.py | python plot.py
Как промежуточный формат, вы можете использовать формат, как JSON, которые доступны в стандартной библиотеке как pypy, так и cpython и могут легко конвертировать из и в примитивы python.
В качестве альтернативы, compute.py может просто использовать модуль подпроцесса, чтобы начать plot.py в CPython вместо того, чтобы полагаться на канал, который устроен оболочкой.
В качестве альтернативы, вы можете использовать pickle, который может сохранять больше информации о объектах python, но будьте осторожны, поскольку pickle не является стандартным стандартом.
Если вы используете достаточно современную версию CPython и Pypy, вы можете попробовать еще одну альтернативу Listener и Client для мультипроцессора. Обратите внимание на то, что в Python и Pypy (multiprocessing Listeners and Clients between python and pypy) была использована функция прослушивателя Cross Python и клиент. Модуль multiprocessing.manager, вероятно, также будет работать через разные cpython и pypy.
Если у вас есть ресурсоемкие функции лучший выбор заключается в следующем:
A) Смотрите, если NumPy может помочь,
B) Смотрите, если функции могут быть оптимизированы в питона,
C) Подумайте о написании расширения C для своей функции.
D) Рассмотрите возможность внедрения cpython и matplotlib в pypy, как показано на рисунке here.
Вы можете использовать execnet. Существует несколько экспонатов Connecting different Python interpreters
A) Нет. Это алгоритмические функции (я играю с простыми числами). B) Pypy обычно силен в оптимизации алгоритмических функций. C), но это требует много времени и сложнее. Я в ситуации, когда pypy должно быть хорошо, чтобы вычислить функцию, и C-python должен быть хорош для построения графика. Проблема состоит в том, чтобы просто соединить эти два. – olivier
Добавлена ссылка на возможное решение. –
Но первое предложение этого несколько пугает. (Просто доказательство концепции, едва работает и т. Д.). Кроме того, кажется, вам нужно перекомпилировать pypy с некоторыми отключенными опциями. Использование модуля многопроцессорности должно быть прекрасным, но я все еще изучаю python. Если нет никаких предостережений, наверняка кто-то уже это сделал. – olivier