如何在Python中创建含无限循环、无需相互等待的多进程
问题原因
- 你代码中创建
Process实例时,target参数错误传入了直接执行的函数调用结果,而非可调用的函数本身。 - 原有写法
Process(target=child_function(3, 5))会在主进程的for循环第一次执行时,立刻调用child_function(3,5),由于该函数内部包含无限死循环,主进程会直接卡死在第一次循环里,无法完成后续9个进程的创建。
修复方案
multiprocessing.Process的target参数仅需要传入函数名(不加调用括号),函数入参通过args关键字参数以元组形式传入即可,修改后的完整代码如下:
import time from multiprocessing import Process def child_function(param1, param2): print(str(param1 * param2)) while True: print("doing some stuff") time.sleep(3) def main_function(): print("Initializing some things.") for _ in range(10): # 核心修改:target传函数引用,参数通过args传递 Process(target=child_function, args=(3, 5)).start() if __name__ == '__main__': main_function()
效果说明
修改后运行代码,主进程会一次性完成10个独立子进程的创建,每个子进程会各自执行无限循环逻辑,互不阻塞,也不会卡住主进程的创建流程。
内容的提问来源于stack exchange,提问作者fatihsonmez
相关产品推荐
相关产品推荐

