我很难找到解决该问题的方法,我想做的是在一定时间后生成一个值,所以像10秒钟后将100.00的值增加0.01,但这已经很有意义了。对我来说,在for循环或while循环中,直到迭代停止,我才能获取该值,例如,如果我有一个数字为100.00的变量,并且我想将该值增加或减少.01
我可以这样做:
import time
import datetime
tracking = time.time()
def values():
cost = 100.00
increase = .01
for x in range(1,1000):
print(x)
time.sleep(2)
if time.time() - 10 > tracking:
cost += increase
print('Cost: {}'.format(cost))
tracking = time.time()
latestvalue = cost
values()
好的,所以循环就可以了,它每10秒钟将值增加0.01,但是它无用,因为我无法访问它,最新值只会给我它的默认值100.0
我认为的另一种解决方案是仅生成值并将它们放在列表中
import time
import datetime
increment = [100.01, 100.02000000000001, 100.03000000000002, 100.04000000000002, 100.05000000000003]
def values():
for i in increment:
newvalue = i
time.sleep(10)
print(newvalue)
c = 0
while True:
c+=1
print(c)
values()
time.sleep(2)
但是这种方式对我来说似乎并不实用或可靠,有人可以为我提供解决方案吗?经过一定时间(10秒)后,根据需要增加或减少值
答案 0 :(得分:0)
我不确定我是否解决了问题。该脚本启动一个线程,每个选定的时间步长(在这种情况下为0.1秒)都会生成一个值并将其放置到out_val
中。在主线程中,我每2秒读取一次此变量:
from itertools import count
from time import sleep
import threading
def thread_function(start, inc, out_val, t=0.1):
for val in count(start, inc):
out_val[0] = val
sleep(t)
out = [None]
x = threading.Thread(target=thread_function, args=(100.0, 0.1, out))
x.start()
while True:
print(out[0])
sleep(2)
打印:
100.0
101.89999999999989
103.89999999999978
105.89999999999966
...and so on.
答案 1 :(得分:0)