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

Python中如何让子进程触发主进程执行指定代码(如休眠)

实现子进程触发主进程休眠的功能

需求:通过子进程检测键盘按键,当指定按键(如g键)被按下时,触发主进程进入休眠状态,暂停主进程的执行(停止打印"global execution"达100秒)。现有示例代码中子进程内的time.sleep(100)仅会让子进程自身休眠,需修改为让主进程执行该休眠操作。

修改后的代码

import time
import multiprocessing
import keyboard

def check_if_button_is_pressed(button, sleep_event):
    while True:
        if keyboard.is_pressed(button):
            # 设置事件,通知主进程执行休眠
            sleep_event.set()
            # 等待按键释放,避免重复触发
            while keyboard.is_pressed(button):
                time.sleep(0.1)

def main():
    # 创建进程间通信的事件对象,用于子进程通知主进程
    sleep_event = multiprocessing.Event()
    # 启动子进程,传入检测按键和事件对象,设置daemon=True让子进程随主进程退出
    multiprocessing.Process(target=check_if_button_is_pressed, args=("g", sleep_event), daemon=True).start()

    while True:
        # 检查子进程是否触发了休眠事件
        if sleep_event.is_set():
            print("主进程进入休眠...")
            time.sleep(100)
            # 休眠结束后清除事件,恢复正常执行
            sleep_event.clear()
            print("主进程恢复执行")
        print("global execution")
        time.sleep(0.1)  # 降低打印频率,避免终端输出过载

if __name__ == "__main__":
    main()

关键说明

  • 进程间通信:使用multiprocessing.Event实现子进程与主进程的信号传递,子进程触发按键后设置事件,主进程通过检测事件状态执行休眠操作。
  • 避免重复触发:子进程中加入按键释放等待逻辑,防止按住g键时多次触发主进程休眠。
  • 守护进程:给子进程设置daemon=True,确保主进程退出时子进程自动终止,避免残留后台进程。
  • 打印频率控制:主进程循环中添加time.sleep(0.1),减少打印次数,优化终端输出体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 08:26:28