Python(2.7.9)中的itertools.count计数器对于线程安全计数非常方便.我怎样才能获得计数器的当前值?
import itertools
x = itertools.count()
print x.next() # 0
print x.next() # 1
print x.next() # 2
到现在为止还挺好.
我找不到一种方法来获取计数器的当前值而不调用next(),这将产生增加计数器或使用repr()函数的不良副作用.
继上述内容之后:
print repr(x) # "count(3)"
current_value = int(repr(x)[6:-1])
会做的伎俩,但真的很难看.
有没有办法更直接地获得计数器的当前值?
最佳答案
使用来源,卢克!
根据module implementation,这是不可能的.
typedef struct {
PyObject_HEAD
Py_ssize_t cnt;
PyObject *long_cnt;
PyObject *long_step;
} countobject;
当前状态存储在cnt和long_cnt成员中,它们都没有在对象API中公开.根据您的建议,只有可以检索它的位置是object __repr__.
请注意,在解析字符串时,您必须考虑非奇异增量情况. repr(itertools.count(123,4))等于’count(123,4)’ – 在这种情况下,您所建议的逻辑将失败.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。