如何实现按下P键时同时运行同一函数的多进程实例
实现按P键启动独立进程运行函数
问题分析
原代码存在两个核心问题:
- 创建
Process时直接执行asyncio.run(function()),导致函数先在主进程内执行完毕,根本没起到多进程的作用。 - 每次循环都调用
join(),强制主进程等待子进程结束,无法实现多进程并行运行。
修改后的代码
import keyboard import asyncio from multiprocessing import Process async def function(): print(f'函数启动,进程ID: {os.getpid()}') await asyncio.sleep(1) print(f'函数结束,进程ID: {os.getpid()}') def run_function(): asyncio.run(function()) if __name__ == '__main__': import os while True: if keyboard.read_key() == "p": print("检测到P键,启动新进程") # 创建并启动子进程,不调用join(),让主进程继续监听按键 p = Process(target=run_function) p.start()
关键修改说明
- 新增
run_function包装函数,解决异步函数直接作为Process目标的语法问题。 - 创建进程时传递函数引用而非直接执行函数,确保子进程独立运行目标逻辑。
- 移除
join()调用,主进程无需等待子进程结束,每次按P键都会启动一个全新的独立进程,多个进程可同时运行。 - 添加
if __name__ == '__main__':保护,避免多进程模式下的重复初始化异常。
内容的提问来源于stack exchange,提问作者Rittari771
相关产品推荐
相关产品推荐

