我希望在10分钟的持续时间内比较两个值。如果A< B持续10分钟然后设置C否则什么都不做。
from datetime import datetime
curr = datetime.now()
print (curr)
Curr_Plus_Ten = datetime.now() + timedelta(minutes=10)
print (Curr_Plus_Ten)
上述输出仅为2012-10-16 11:37:55.224999和2012-10-16 11:47:55.224999
我认为我会使用当前时间和当前时间+ 10分钟来实现正确的比较持续时间,但是如果将时间与If或a While一起使用以进行实际比较则会丢失。 A和B都是整数,C是bool,根据比较,它可以是真或假。任何帮助将不胜感激。
谢谢,
-Mark
答案 0 :(得分:1)
也许最简单的解决方案是使用睡眠间隔阻止while循环。请注意,这只有在您的A值实际可以在两者之间发生变化时才会起作用(例如,如果它是SQL查询的结果或类似的话)。
import datetime
import time
def getA():
import random
return random.random()
def getB():
return .01
checkTime = datetime.timedelta(minutes=10)
checkIntervalInSecs = .5
c = False
timeToStop = datetime.datetime.now() + checkTime
while(datetime.datetime.now() < timeToStop):
if getA() < getB():
c = True
break
time.sleep(checkIntervalInSecs)
print c
答案 1 :(得分:0)
我相信这就是您正在寻找的东西(或类似的东西),这应该能够帮助您解决当前遇到的问题。
import threading,random,time
results=[]
a=2
b=3
def check_values():
if a<b:
results.append("a<b")
else:
results.append("a>=b")
print "Results-> "+",".join(str(x) for x in results)
check=Timer(30.0,check_values)
check.start()
try:
while True:
case=random.randrange(0,100)
if case>=50:
a+=1
else:
b+=1
time.sleep(2)
except KeyboardInterrupt:
check.stop()
print "Final Results-> "+",".join(str(x) for x in results)
exit(0)
答案 2 :(得分:0)
您可以使用基于属性的方法,如下所示:
#a.py
import sys
class Test(object):
def __init__(self):
self._a = 0
@property
def a(self):
return self._a
@a.setter
def a(self, value):
self._a = value
print "New 'a' is: %s" % value
######## YOU CAN TEST HERE IF A > B OR WHATEVER ########
sys.modules[__name__] = Test()
然后:
>>>import a
>>>a.a
0
>>>a.a = 10
New 'a' is: 10
>>>a.a
10
>>>a.a = 100
New 'a' is: 100
有点hackish,你必须明确使用a.a,但它有效。