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

如何让Python闹钟的两个进程同时运行?

问题根源

你创建进程时犯了一个关键错误:直接调用了函数(加了括号()),而不是把函数对象传给target参数。这会导致在创建Process实例的时候,就立即同步执行了alarm_sound()和window(),完全没有启动新进程,自然是交替执行。

修复方案

修改进程创建的代码,去掉函数名后的括号,只传递函数对象给target:

# 错误写法:直接调用函数,导致同步执行
# process1=Process(target=alarm_sound())
# process2=Process(target=window())

# 正确写法:传递函数对象,由进程启动时调用
process1 = Process(target=alarm_sound)
process2 = Process(target=window)

process1.start()
process2.start()
process1.join()
process2.join()
额外注意事项
  • Tkinter与多进程的兼容性:Tkinter的GUI只能在主进程中运行,子进程创建Tk窗口可能引发崩溃或异常。建议把窗口逻辑放在主进程,用多线程处理音效播放(IO密集型任务更适合线程)。
  • 循环退出问题:最后一个while True循环在触发闹钟后会持续重复创建进程,需添加break退出循环:
    if current_time == user_time:
        print(name_of_alarm)
        # 进程创建与启动代码...
        break  # 触发后退出循环
    
  • 多线程替代方案:如果只是同时播放音效和显示窗口,用threading更轻量,修改逻辑和多进程一致:
    from threading import Thread
    
    thread1 = Thread(target=alarm_sound)
    thread2 = Thread(target=window)
    thread1.start()
    thread2.start()
    thread1.join()
    thread2.join()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:37:10