multiprocess.Process的Spawn没有在Python中正确填充Queue

时间:2011-01-19 19:04:29

标签: python multiprocessing

我目前正在为Python中的压力测试编写一个连接管理器,似乎我的队列永远不会填满。这个假的代码将比我能更好地解释它:

def wget(processQueue)
    currProcess = subprocess.Popen(./wget)
    processQueue.put(currProcess)

def connection(processQueue)
    process = multiprocessing.Process(target=wget, args=(processQueue,))
    process.start()

processQueue = Queue.Queue()
newConnection = multiprocessing.Process(target=connection, args=(processQueue,))
newConnection.start()
processQueue.qsize() # This is 0

无论如何可以解释为什么我的队列大小为0?

1 个答案:

答案 0 :(得分:3)

关于processQueue.qsize,请注意文档说:

Definition: processQueue.qsize(self)
Docstring:
    Return the approximate size of the queue (not reliable!).

所以你不应该依赖qsize告诉你队列是否为空。

此外,由于您可能在调用processQueue.qsize 之前到达processQueue.put 行,因此该队列当时可能确实为空,但不会永远为空。