Python 根据时间制作计数器的最佳方法

Python 根据时间制作计数器的最佳方法,python,algorithm,Python,Algorithm,如何在不使用线程的情况下每2秒递增一个全局变量 def get_interval(): var a=1; for every 2 second a++; return a; 我怎样才能每2秒增加a的值?如果您不担心确切的时间,您可以像这样在增量之间睡2秒: import time a = 1 for i in range(10): time.sleep(2) print a a += 1 import time def make_

如何在不使用线程的情况下每2秒递增一个全局变量

def get_interval():
    var a=1;
    for every 2 second
    a++;
    return a;

我怎样才能每2秒增加
a
的值?

如果您不担心确切的时间,您可以像这样在增量之间睡2秒:

import time

a = 1

for i in range(10):
    time.sleep(2)
    print a
    a += 1
import time

def make_ticker():
    start = time.time()
    def elapsed():
        now = time.time()
        return now-start
    return elapsed
输出:

1
2
...
9
10

如果您从未访问该变量,那么即使它随着时间的推移而增加,它也不会非常有用。所以你真正想要的是你可以通过某种方式访问的东西,它会给你一个答案,就像它随着时间的推移而增加一样。但要做到这一点,你需要做的就是从你开始的时候减去当前时间

例如,您可以使用如下内容:

import time

a = 1

for i in range(10):
    time.sleep(2)
    print a
    a += 1
import time

def make_ticker():
    start = time.time()
    def elapsed():
        now = time.time()
        return now-start
    return elapsed
然后在启动后,只需编写
a()
而不是
a

>>> a = make_ticker()
>>> a()
3.3126659393310547
>>> a()
5.144495010375977
>>> a()
7.766999006271362
类似地,如果要计算经过的2秒时段数,请执行以下操作:

def make_ticker(seconds):
    start = time.time()
    def elapsed():
        now = time.time()
        return (now-start)//seconds
    return elapsed

>>> a = make_ticker(2)
>>> a()
0.0
>>> a()
1.0
>>> a()
1.0
>>> a()
2.0

(您可以简单地修改为从1开始。)

实际上,我希望输出为1、2、3、4,。。。无论何时我们调用函数。更新答案以表示感谢DSM,它节省了我的时间