我使用Python 2.7并希望使用日期时间函数来计算用户定义的运行小型泵的时间。我知道我错过了一些明显的东西,但我一直在寻找,直到我无法直接看到。我有一个textCtrl,用户将输入他希望泵运行的分钟数。然后单击按钮将启动调度程序并检查是否有时间关闭泵:
> (size1 '((((7) 9 (11)))))
size is 1
问题是def timedPump(val):
now = datetime.datetime.now()
timeOff = now + datetime.timedelta(minutes=int(val))
if timeOff > now:
print 'pumpOn'
else:
print 'pumpOff'
return True
每次都会更新。如何使datetime.datetime.now()
=单击按钮的时间?
答案 0 :(得分:1)
这将是我解决问题的方法:
from time import sleep
def pumpcheck(timer_in_minutes):
time_clicked = datetime.datetime.now()
now = time_clicked
timeDiff = datetime.timedelta(minutes=int(timer_in_minutes))
while (time_clicked + timeDiff > now):
print 'pumpOn'
now = datetime.datetime.now()
sleep(2)
print 'pumpOff'
它节省了按下按钮的时间,然后检查循环,如果时间是rfeached,如果没有,它会更新当前时间,说泵仍然打开并且睡了一会儿就没有bloack cpu recources 。到达时间时,它表示泵送
答案 1 :(得分:0)
有关如何评估timedPump的信息缺失。我想这是一个简单的循环。
需要做的是必须有两个功能,一个用于设置turnOff-time,另一个用于评估天气以打开/关闭泵。 这可以作为类的两种方法实现:
class PumpControl(object):
def setTime(self, val):
now = datetime.now()
self.timeOff=now + timedelta(minutes=int(val))
print 'pumpOn'
def checkTime(self):
if self.timeOff < datetime.now():
print 'pumpOff'
这样你就可以创建一个PumpControl对象,然后重复checkTime:
controller = PumpControl()
#inside your loop
controller.checkTime()
#when you want to set the time
controller.setTime(val)
这也适用于线程,所以你可以让一个线程重复,另一个线程要求时间。
答案 2 :(得分:0)
这听起来像是单一功能范围之外的东西。将逻辑拆分为两个函数,或使用类来保留start_time