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

根据您要执行的操作,可以想到一些选项:

  • 您可以使用操作系统管道(FIFO,等等),并像文件一样从/向它读取/写入数据。这根本不会使用Queue系统。
  • 你可以反过来组合这些程序。让 two.py 和 three.py 只定义它们各自的功能,然后import two, three从 one.py 中,并从 one.py 中分叉进程。multiprocessing大概用于这个。我不能 100% 确定它是否Queue能在完全分叉的进程中正常工作。该multiprocessing包也有自己的Queue类。
  • 只需使用 python 线程。我的印象是这不适合您的应用程序,但我想我还是把它放在这里。

第二种选择可能是我会做的。two.py 和 three.py 中的函数需要将 aQueue作为参数。

于 2013-03-15T02:51:58.607 回答
0

两个不同的程序不能直接访问彼此的数据。这在操作系统上下文中称为进程隔离:

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 回答