我希望我的Python2守护程序能够唤醒并在第二天完成某些事情。
有没有更好的方法来获取睡眠时间以外的浮点数的十分部分:
now = time.time() #get the current time in a floating point format
left_part = long(now) #isolate out the integer part
right_part = now - left_part #now get the decimal part
time.sleep(1 - right_part) #and sleep for the remaining portion of this second.
睡眠时间将根据在这一秒内完成的工作量而变化。
是否有"睡眠直到"功能我不知道?要么, 有没有更好的方法来解决这个问题?
我希望我的守护进程尽可能高效,以免垄断太多来自其他进程的CPU。
感谢。标记
答案 0 :(得分:8)
math.modf(x)
返回x的小数和整数部分。都 结果带有x的符号并且是浮点数。
示例:强>
>>> from math import modf
>>> modf(3.1234)
(0.12340000000000018, 3.0)
答案 1 :(得分:6)
time.sleep
无法保证在您告知时准确唤醒,这可能有点不准确。
要获取小数点后的部分,请使用模数(%
)运算符:
>>> 3.5 % 1
.5
e.g:
>>> t = time.time()
>>> t
1430963764.102048
>>> 1 - t % 1
0.8979520797729492
至于“sleep til”,您可能会对sched模块感兴趣,该模块是围绕这个想法构建的:https://docs.python.org/2/library/sched
答案 2 :(得分:0)
n=(float(input('Enter the Decimal Value: ')))
n1=(str(n))
l=0
s=''
for i in range(len(n1)):
c=n1[i]
if c=='.' or l==1:
l=1
if c!='.':
s+=c#storing the decimal part
# Converting the decimal part to the integer part
print('0.{0}'.format(int(s)))
在此过程中,您将获得python中浮点值的位数和绝对值。