2011-01-19 36 views
2

我目前正在为Python中的压力测试编写一个连接管理器,看起来我的队列永远不会填满。这个pseudoesque-code将解释它比我更好:多进程的产生。进程没有在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?

+0

此外,我没有意识到Queue.Queue和multiprocessing.Queue之间的区别! – afuzzyllama 2011-01-19 20:04:53

回答

3

关于processQueue.qsize,注意,文件说:

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

,所以你不应该依赖于qsize告诉你,如果队列为空。

而且,因为你可能会达到行processQueue.qsizeprocessQueue.put被调用时,队列可能确实是在那一刻空,但不是空的,直到永远。

+0

如果我有很多参数,例如:args =(用户名,密码,url,processQueue)会发生什么......这仍然适用吗? – afuzzyllama 2011-01-19 19:25:26