Вы можете создать процесс python 2.7 как сервер, обрабатывающий запросы RPC из вашего графического интерфейса, работающего на 3.2. Это будет работать либо по сети, либо по локальным каналам, либо по общей памяти, либо по шине сообщений вашей системы, или многими другими способами. Вам просто нужно перевести API вашей библиотеки в какие-то сериализованные сообщения.
Допустим, в вашей библиотеке есть функция: (суперупрощенный пример)
def add(a, b):
return a+b
Вы бы поместили это на какой-нибудь сервер, скажем, в фласк-приложение, которое делает:
@app.route("/add", methods=["POST"])
def handle_add():
data = request.get_json()
ret = your_lib.add(data['a'], data['b'])
return jsonify(ret)
а на стороне клиента отправьте и распакуйте значения, используя что-то вроде запросов.
Вы даже можете сделать его довольно прозрачным, реализовав модуль транслятора с методами, названными так же, как и сама библиотека, и выполнив import your_http_wrapper as your_library_name
.
Хитрость теперь заключается в том, чтобы убедиться, что все ваши параметры могут быть сериализованы и что вы можете реально отправлять все аргументы/возвращаемые значения в разумное время при каждом вызове. Кроме того, вы теряете возможность изменять содержимое переменных, которые вы передаете в оболочку, потому что сервер будет изменять только локальную копию (если вы также не реализуете сериализацию всех этих модификаций).
person
viraptor
schedule
19.05.2016