0

ソースは次のとおりです。

#one.py: 
from Queue import Queue 
req = Queue()

#two.py: 
import one 
import time 
if __name__ == '__main__': 
    while True: 
    print "this is two.py and reqID is ",id(one.req) 
    print "Queue size is %s"%one.req.qsize() 
    time.sleep(5) 

#three.py: 
import one 
import time 
if __name__ == '__main__': 
    while True: 
    print "this is three.py and reqID is ",id(one.req) 
    print "Queue size is %s"%one.req.qsize() 
    one.req.put(2) 
    time.sleep(5) 

one.py共通のキューがあります。の共通キューを使用two.pythree.pyて制御したい。one.py

4

2 に答える 2

0

2 つの異なるプログラムが互いのデータに直接アクセスすることはできません。これは、オペレーティング システムのコンテキストではプロセス分離と呼ばれます。

http://en.wikipedia.org/wiki/Process_isolation

そのためには、プロセス間通信を使用する必要があります。見る:

http://en.wikipedia.org/wiki/Inter-process_communication

Python 標準ライブラリの IPC 機能の例:

http://docs.python.org/2/library/ipc.html

于 2013-03-15T02:53:46.547 に答える
0

何をしようとしているかに応じて、いくつかのオプションが思い浮かびます。

  • オペレーティング システムのパイプ (FIFO など) を使用して、ファイルのようにデータを読み書きすることができます。これはQueueシステムをまったく使用しません。
  • プログラムを逆に組み合わせることができます。two.py と three.py にそれぞれの関数を定義させてimport two, threeから、one.py から、one.py 内からプロセスを fork します。multiprocessingおそらくこれに使用します。Queueが完全にフォークされたプロセスで適切に機能するかどうかは 100% わかりません。multiprocessingパッケージには独自のクラスもありますQueue
  • Pythonスレッドを使用するだけです。これはあなたのアプリケーションには適していないという印象を受けましたが、とにかくここに置くことにしました。

2番目のオプションは、おそらく私がすることです。two.py と three.py の関数はQueue、引数として a を取る必要があります。

于 2013-03-15T02:51:58.607 に答える