2011-01-19 83 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