Ich versuche, einen Zähler zu erstellen, um "Host 5/100 fertig" am Ende meiner Aufgabe anzuzeigen. Ich habe einen Zähler classe:Fabric-Zähler zum Anzeigen, wie viele Hosts fertig sind
class ThreadCounter(object):
def __init__(self, initval=0):
self.val =int(initval)
self.lock = threading.Lock()
def increment(self):
with self.lock:
self.val += 1
def value(self):
with self.lock:
return self.val
ich ein paar Dinge ausprobiert, es funktioniert: In meiner Hauptfunktion, ich meine Aufgabe rufen Sie den Zähler als Argument geben
def main():
my_counter = ThreadCounter(0)
execute(the_task,my_counter)
@parallel
def the_task(counter):
try:
do---my--stuff
finally :
my_counter.increment()
print my_counter.value()
Der Zähler war immer an "1" wenn angezeigt. Ich fühle mich wie der Zähler nicht geteilt wurde.
Ich habe auch versucht, den Zähler als global
aber das gleiche Ergebnis zu deklarieren. Mein letzter Versuch war ein lock
-the_task
und in the_task
geben:
with lock :
counter += 1
print counter
Was soll ich tun Zähler zwischen den gleichen Stoff Aufgaben zu teilen? Ich bin neu mit Threads in Python. (Ich verwende Python 2.6 (nicht freiwillig))
Ow, ich habe vergessen, laufen meine Aufgabe parallel zu sagen. Das macht genau das, was ich wollte, und ich denke, es zwingt meine Aufgabe, sequentiell zu sein. – pwnsauce