Я создаю приложение Objective-C mac. Я хотел бы, чтобы это приложение могло запускать и постоянно взаимодействовать с тем же запущенным процессом python.
Например, основной поток может быть:
Какие методы я могу использовать для этого? Любое руководство было бы невероятно полезным.
Возможным решением является запуск макетной веб-службы по вашему процессу Python. Определите свои собственные интерфейсы (скорее всего, API RESTful) для вашего приложения Objective-C для доступа. Возможно, это будет немного дорогим в производительности - это зависит от сложности вашей фактической задачи и объема данных, которые вы хотите передать между двумя процессами.
Например, в процессе Python запустите стандартную HTTP-службу на 8080-порте, все время слушайте. Затем приложение Obj-C отправляет запрос на localhost, что-то вроде:
http://127.0.0.1:8080/my_service/start_task
http://127.0.0.1:8080/my_service/get_progress
http://127.0.0.1:8080/my_service/get_result
и Python обрабатывает этот запрос, что-то делает и возвращает результат в ответе HTTP.
Кстати, возможно, вы могли бы рассмотреть возможность использования методов Python непосредственно с помощью интерфейса C в вашем приложении Obj-C, а не для запуска сценариев Python в отдельном процессе.
На мой взгляд, самым простым способом установления связи между двумя приложениями является клиент-серверный протокол XMLRPC. Оба Cocoa и Python поддерживают его.
Часть Python довольно проста:
import xmlrpc.client
rpcProxy = xmlrpc.client.ServerProxy(URL_OF_SERVER)
rpcProxy.doJobInMacApp(arg1, arg2)
Что касается Objective-C-части, я не знаю, но, похоже, это возможно: XML-RPC-сервер в cocoa или лучший способ использовать XML-RPC в приложении Cocoa?