파이썬에서 카운터 itertools.count
(2.7.9)은 스레드 안전 계산에 매우 편리합니다. 카운터의 현재 값을 어떻게 얻을 수 있습니까?파이썬 itertools 카운터의 현재 값은 무엇입니까
import itertools
x = itertools.count()
print x.next() # 0
print x.next() # 1
print x.next() # 2
지금까지 너무 좋은 :
카운터가 증가하고 마지막 값이 next()
를 호출 할 때마다 반환합니다.
next()
을 호출하지 않고 카운터의 현재 값을 가져 오는 방법을 찾을 수 없습니다. 카운터를 높이거나 repr()
함수를 사용하면 부작용이 생길 수 있습니다.
위에 이어 :
print repr(x) # "count(3)"
그래서 당신이 repr()
의 출력을 구문 분석 할 수있다. 뭔가 같은
current_value = int(repr(x)[6:-1])
트릭을 할 것이지만, 정말 못 생겼어.
카운터의 현재 값을보다 직접 가져 오는 방법이 있습니까?
특히 스레드 안전하다고는 어디입니까? –
@MattiVirkkunen 나는 [this answer] (http://stackoverflow.com/a/27062830/2291710)을 읽고 나 자신을 테스트 한 후,'next (count()) '가 실제로 스레드로부터 안전하다는 것을 알 수있다. – Delgan
스레드 안전성 테스트는 쉽지 않습니다. 또한 GIL을 사용하여 thread를 안전하게 유지하려면 plain 변수와'+ ='를 사용하는 것과 실제로 다른 점이 있습니까? –