为何第二个Python函数无法运行?存在无限循环问题
问题解答:第二个函数不执行的原因及解决方法
为什么b()不执行?
- Python默认是单线程执行模型,你的代码中
a()是无限循环,调用a()后,主线程会被这个循环永久占用,程序永远不会走到b()的调用语句,自然无法执行b()。
实现两个函数同时无限运行的解决方案
要让两个无限循环的函数同时运行,需要用到多线程,把两个函数分配到不同的线程中执行。示例代码如下:
import time import threading def a(): while True: time.sleep(1) print('Ha') def b(): while True: time.sleep(2) print('Ho') # 创建线程对象,指定要执行的函数 t1 = threading.Thread(target=a) t2 = threading.Thread(target=b) # 启动线程 t1.start() t2.start() # 让主线程等待子线程结束(因子线程是无限循环,主线程会持续等待以保证子线程运行) t1.join() t2.join()
- 通过
threading.Thread创建两个独立线程,分别绑定a()和b()。启动线程后,两个函数会并行执行,各自的无限循环都能正常运行。 join()方法会让主线程等待子线程结束,由于两个子线程是无限循环,主线程会一直处于等待状态,确保子线程持续运行。
内容的提问来源于stack exchange,提问作者paparonnie
相关产品推荐
相关产品推荐

