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。
毕竟循环中其他的代码会造成误差,这样就不能直接等待一秒了。