获取python中

时间:2015-05-07 00:47:18

标签: python

我希望我的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。

感谢。标记

3 个答案:

答案 0 :(得分:8)

使用math.modf()

  

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中浮点值的位数和绝对值。