You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python程序中实现随程序运行的定时器?要求定时器结束时触发提示消息或执行循环控制等操作

Hey there! Let's work through your two Python timer requirements step by step. I'll share practical, tested code examples for each case so you can plug them into your project easily.

1. Synchronous-Running Timer (Runs alongside the main program, outputs a prompt when done)

What you're asking for here is a timer that runs in the background without blocking your main program's execution. Python's threading.Timer is perfect for this—it spins up a separate thread to handle the countdown, and triggers your custom function once the time is up.

Here's a straightforward example:

import threading
import time

def timer_finished():
    print("⏰ Timer's up!")

# Create a timer that triggers after 3 seconds
timer = threading.Timer(3, timer_finished)
timer.start()

# Simulate your main program's work
print("Main program starting...")
for i in range(5):
    print(f"Main program working on task {i+1}")
    time.sleep(1)

When you run this, you'll see the main program's tasks print out, and after 3 seconds the timer's prompt will pop up right alongside them. If you ever need to cancel the timer before it finishes, just call timer.cancel().

2. Timer with Loop Control (Interrupt/Resume the loop when the timer finishes)

For this, we need the timer to communicate with your main loop to change its behavior. The cleanest way to do this is using a thread-safe flag or event to signal when the timer has finished.

Example 1: Interrupt the loop when the timer triggers

We'll use a threading.Event (safer than regular global variables for multi-threaded scenarios) to tell the loop when to stop:

import threading
import time

# Thread-safe event to track if the timer has triggered
timer_triggered = threading.Event()

def trigger_loop_stop():
    print("⏰ Timer's up! Stopping the main loop...")
    timer_triggered.set()

# Start a 5-second timer
timer = threading.Timer(5, trigger_loop_stop)
timer.start()

print("Main loop starting...")
while not timer_triggered.is_set():
    print("Loop is running...")
    time.sleep(1)

print("Main loop has been interrupted.")

The set() method marks the event as triggered, and is_set() checks that state—this handles all thread synchronization under the hood.

Example 2: Toggle between pausing and resuming the loop

If you need more flexibility (like pausing the loop and resuming it later), you can use a state variable to control the loop's behavior:

import threading
import time

# State codes: 0 = running, 1 = paused, 2 = stopped
loop_state = 0

def toggle_loop_state():
    global loop_state
    if loop_state == 0:
        print("⏰ Timer's up! Pausing the loop...")
        loop_state = 1
    else:
        print("⏰ Timer's up! Resuming the loop...")
        loop_state = 0

# Start a 4-second timer
timer = threading.Timer(4, toggle_loop_state)
timer.start()

print("Main loop starting...")
while loop_state != 2:
    if loop_state == 0:
        print("Loop is actively running...")
        time.sleep(1)
    elif loop_state == 1:
        print("Loop is paused. Press Enter to resume...")
        input()
        print("Resuming loop...")
        loop_state = 0
        # Restart the timer if you want it to trigger again
        timer = threading.Timer(4, toggle_loop_state)
        timer.start()

print("Main loop has been stopped completely.")

This setup lets the timer switch the loop between running and paused, and you can add logic to stop the loop entirely by setting loop_state = 2.

内容的提问来源于stack exchange,提问作者Walnut street

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 22:02:34