Python时间,无限期休眠

nnvyjq4y  于 2023-02-20  发布在  Python
关注(0)|答案(3)|浏览(210)

在Python的time模块中,有一个sleep()函数,可以让Python等待x秒后再继续运行程序,有没有办法无限期地这样做,直到满足某个条件?例如:

while True:
    time.sleep()
    if x:
        break

time.unsleep()

我正在尝试为我的PyGame程序做一个暂停功能。任何帮助都是感激的。

xmq68pz9

xmq68pz91#

大概是这样的

while not x: time.sleep(0.1)

我将一直等到x为真,在两次检查之间休眠十分之一秒,这通常足够短,脚本似乎可以立即做出React(用人类的术语)当x变为true时。如果这还不够快,您可以使用0.01。根据我的经验,今天的计算机速度足够快,即使每百分之一秒检查一个简单的条件,也不会真正降低CPU的使用率。
当然,x应该是可以实际更改的内容,例如函数调用。

1bqhqjot

1bqhqjot2#

问题中的代码暗示了你希望其他线程继续你的程序,在这种情况下你可以使用resumed = threading.Event(),你可以在一个线程中创建它,然后把它传递给另一个线程:

while not resumed.wait(): # wait until resumed
    "continue waiting"

调用resumed.set()立即恢复此代码。
我正在尝试为我的PyGame程序做一个暂停功能。任何帮助都是感激的。
使用pygame.time。通常情况下,你有一个主循环来更新游戏的状态,在循环的末尾你调用clock.tick(60) # 60 fps。在这种情况下,使用paused标志来跳过更新就足够了。

9jyewag0

9jyewag03#

您可以按如下方式派生一个线程:

import sys    
import time
from threading import Thread

prepare_to_stop = 0

def in_background_thread():
    while not prepare_to_stop:
        # Program code here
        print(prepare_to_stop)
        time.sleep(0.1)

try:
    th = Thread(target=in_background_thread)
    th.start()
    print("\nProgram will shut down after current operation is complete.\n")
    time.sleep(10**8)
except KeyboardInterrupt:
    prepare_to_stop = 1

print("Program shutting down...")

相关问题