0
작업이 끝날 때 "호스트 5/100 완료"를 표시 할 수 있도록 카운터를 만들려고합니다. 나는 카운터가 항상 있었다얼마나 많은 호스트가 수행되었는지를 나타내는 패브릭 카운터
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()
인수로 카운터를주고 내 작업 전화 을 내 주요 기능에 :
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
내가 그것을 작동하게하는 몇 가지 시도 : 나는 카운터 CLASSE이 표시되면 "1". 나는 카운터가 공유되지 않았던 것처럼 느낀다.
또한 카운터를 global
으로 선언했지만 동일한 결과를 나타 냈습니다. 내 마지막 시도가 lock
the_task
에와 the_task
에주고 있었다 :
with lock :
counter += 1
print counter
내가 같은 직물 작업 사이에 카운터를 공유해야합니까? 저는 파이썬에서 쓰레드를 처음 접했습니다. 당신이 좋아하는 작업 완료를 추적하기 위해 장식을 사용할 수 있습니다
아야 (I 파이썬 2.6 (안 기꺼이)를 사용), I는 말을 병렬로 내 작업 실행을 잊어 버렸습니다. 이것은 내가 원했던 것과 정확히 똑같이 수행한다. 내 작업이 순차적으로 진행될 것이라고 생각한다. – pwnsauce