2016-04-15 6 views
2

Ich implementiere Python Queue mit Thread. Ich brauche einen Weg, um die Gesamtzahl der Elemente in der Warteschlange (die ich mit queue.qsize() bekommen kann) und die Anzahl der unerledigten Aufgaben zu bekommen. Grundsätzlich benötige ich eine Zählung aller Artikel, die bearbeitet werden/bearbeitet werden müssen. Die Python Queue documentation erwähnt folgendes:Python-Warteschlange Anzahl der unerledigten Aufgaben

Die Zahl der noch nicht abgeschlossenen Aufgaben nach oben geht, wenn ein Element der Warteschlange hinzugefügt wird. Die Anzahl sinkt, wenn ein Consumer-Thread task_done() aufruft, um anzuzeigen, dass das Element abgerufen wurde und alle daran vorgenommenen Aufgaben abgeschlossen sind. Wenn die Anzahl nicht bearbeiteter Aufgaben auf Null fällt, wird durch Join() die Freigabe aufgehoben.

Aber es bietet keinen Einblick wie auf diese Anzahl zugreifen. Danke im Voraus!

+1

Nun, das ist: http://StackOverflow.com/Questions/11786530/CanPython-Threads-Access-Variables-in-The-Namespace ist eine Alternative, aber ich habe das Gefühl, es muss etwas in Queue eingebaut werden .. – Mocking

Antwort

3

Ich bin überrascht, es ist nicht in der Dokumentation erwähnt, aber Queue Objekte haben ein unfinished_tasks Attribut:

>>> x = queue.Queue() 
>>> x.unfinished_tasks 
0 
>>> x.put("test") 
>>> x.unfinished_tasks 
1 

Da es in der Dokumentation nicht erwähnt wird es nicht als Teil der öffentlichen Schnittstelle gewährleistet ist und möglicherweise nicht threadsicher.

+0

Sie, Herr oder Frau, sind die Besten. – Mocking

+2

Ja, aber ... kann es als Teil der öffentlichen API der Queue-Klasse oder als Implementierungsdetail betrachtet werden? –

+2

@AlvaroGutierrezPerez schießen Ich denke, nicht in der Dokumentation wäre es ein Implementierungsdetail machen. Nun, das ist enttäuschend. –

Verwandte Themen