发布于 5年前

Python如何在一个方法延时的时候,不影响另一个正常运行?

 def a():
    print('11')
    print('22')
    time.sleep(3)

def b():
    print('aa')
    time.sleep(70)

if __name__ == "__main__":
    while 1:
        a()
        b()

如何在b延时70秒的时候,a能正常输出。

现在的情况 是b等待70秒的时候,整个程序是停止70秒。

想在b等待70秒时,不影响a。

进程 和线程,不行,会出错,已经试过了,有别的方法吗?

两种方法:

1.多线程

多线程可以的,但要用对方法。

2.等待

不要直接用sleep,而是用变量记录一段循环两个端点的时间,利用中间的时间差来控制等待时间,这个方法在游戏中运用得比较多一点(deltatime)。

以下是第二个思路最简单的例子:

import time
def a():
    print('11')
    print('22')

def b():
    print('aa')

if __name__ == "__main__":
    a_wait = 3
    b_wait = 70
    while True:
        time.sleep(1)
        a_wait -= 1
        b_wait -= 1
        if a_wait == 0:
            a()
            a_wait = 3
        if b_wait == 0:
            b()
            b_wait = 70

由于你给的程序很简单且对时间的计算都是以秒为单位,只需要每次等待一秒,当达到三秒或者七十秒的时候执行相应的函数就好了,所以我直接使用的1秒作为deltatime。如果涉及到更精确的时间,则还是需要用time.time()来计算循环初始时间,然后在循环结尾计算中间的时间差来获得更精准的deltatime。

毕竟循环中其他的代码会造成误差,这样就不能直接等待一秒了。

©2020 edoou.com   京ICP备16001874号-3