1

Objective-C mac アプリを構築しています。そのアプリを起動して、実行中の同じ python プロセスと継続的に通信できるようにしたいと考えています。

たとえば、基本的なフローは次のようになります。

  1. アプリが起動し、バックグラウンドで Python プロセスを開始します
  2. アプリはいくつかのライブラリをインポートし、python プロセスでいくつかの変数を初期化します
  3. ユーザーが何かを行い、初期化された変数を使用してこの python プロセスで python コードを実行し、mac アプリで python 式の結果を使用します

これを達成するためにどのようなテクニックを使用できますか? どんなガイダンスも非常に役に立ちます。

4

2 に答える 2

2

考えられる解決策は、Python プロセスでモック Web サービスを実行することです。Objective-C アプリがアクセスする独自のインターフェイス (ほとんどの場合、RESTful API) を定義します。実際のタスクの複雑さと 2 つのプロセス間で転送するデータの量によって異なりますが、パフォーマンスが少し高くなる可能性があります。

たとえば、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 スクリプトを実行するのではなく、Obj-C アプリでC インターフェイスから直接 Python メソッドを呼び出すことを検討することもできます。

于 2012-04-26T05:22:05.060 に答える
0

私の目には、2 つのアプリケーション間の通信を確立する最も簡単な方法は、クライアント/サーバー プロトコルXMLRPCです。CocoaPythonの両方がサポートしています。

Python の部分はかなり単純です。

import xmlrpc.client
rpcProxy = xmlrpc.client.ServerProxy(URL_OF_SERVER)
rpcProxy.doJobInMacApp(arg1, arg2)

Objective-C の部分についてはわかりませんが、可能のようです: Cocoa の XML-RPC サーバーまたはCocoa アプリケーションで XML-RPC を使用する最良の方法は?

于 2012-07-09T12:40:31.973 に答える