2011-01-19 4 views
2

Je suis en train d'écrire un gestionnaire de connexion pour un test de stress en Python il semble que ma file ne se remplisse jamais. Ce pseudoesque code expliquera mieux que moi:Le lancement d'un multiprocess.Process ne remplit pas la file d'attente correctement en 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 

peut quand même expliquer pourquoi ma file d'attente a une taille de 0?

+0

Aussi, j'ai échoué à réaliser la différence entre Queue.Queue et multiprocessing.Queue! – afuzzyllama

Répondre

3

En ce qui concerne processQueue.qsize, notez que les documents disent:

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

vous ne devriez pas compter sur qsize pour vous dire si la file d'attente est vide.

En outre, étant donné que vous pouvez atteindre la ligne processQueue.qsizeavant le processQueue.put est appelé, la file d'attente peut en effet être vide à ce moment-là, mais pas vide pour toujours.

+0

Que se passe-t-il si j'ai beaucoup d'arguments, ex: args = (nom d'utilisateur, mot de passe, url, processQueue) ... cela s'applique-t-il toujours? – afuzzyllama