1

pygtk で 1 つの py ファイル ( stuff.py) から別の py ファイル ( start.py) にデータを送信したいということは、あるウィンドウから別のウィンドウにデータを送信したいということです。そのため、あるファイルから別のファイルにデータを送信する方法を教えてください。

を使用してsubprocessいます。

subprocess.call('start.py', shell=True)
4

1 に答える 1

1

まず第一に、ある PROCESS から別の PROCESS にデータを送信することについて話すべきです — ファイル間でデータを送信することはあまり意味がありません (ファイル 1 からコンテンツを取得し、それをコピーしてファイル 2 に貼り付けることについて話していない限り、それは明らかにこれが何であるかではありません)。

これを IPC (Inter-Processes Communication) と呼びます。それにはさまざまな方法があります。いくつかのオプションをリストするには:

  • 1 つのプロセスがファイルに書き込み、もう 1 つのプロセスがそのファイルから読み取る
  • 1 つのプロセスが名前付きパイプに書き込み、もう 1 つのプロセスがその名前付きパイプから読み取ります (最初のオプションとほとんど交換可能です)。
  • 1 つのプロセスが、他のプロセスがリッスンするポートの TCP/ソケットを介して他のプロセスに接続し、一定期間にわたって TCP パケットの交換を開始します。
  • プロセスはコンピューターの RAM の一部を共有するため、同じ場所から読み書きできます (これにより非常に優れたパフォーマンスが得られますが、コピー オン ライトが原因で Python ではそれほど単純ではありません。非常に簡単にトリガーされます、AFAIK)
  • より一般的に言えば、ネットワーキングにも適した、ZeroMQ などのより高レベルの IPC メカニズムを使用します。これらは、すべての低レベルの技術的およびプロトコルの詳細を処理する負担を軽減します。したがって、IPC を定期的に処理する必要がある場合や、重要なタスクで処理する必要がある場合は、ZeroMQ または同様のものを検討することを強くお勧めします。開始方法の詳細については、 http ://zeromq.orgおよびhttp://zeromq.github.io/pyzmq/を参照してください。これを選択する必要があります。

詳細については、https://en.wikipedia.org/wiki/Inter-process_communicationを参照してください。

いいえsubprocess.call(...)、これは完全に新しいプロセスを作成する他のファイルを呼び出すだけです。これは、生成元かどうかに関係なく、既存のプロセスにはまったく影響しませstart.pyん。また、私の知る限りでは、アプリが pygtk を使用しているかどうかは、IPC の実行方法の問題とは多かれ少なかれ関係がないはずです。

于 2013-09-23T11:27:23.507 に答える