python线程都没有运行,为什么?
一旦主线程退出,所有的子线程都会被杀掉。你的主线程运行得太快了,子线程还没来得及工作。
简单的解决方法是在程序中加一个时间足够长的 sleep,让子线程能够完成运行。
importthreading,timedefthread_task(name,n):
foriinrange(n):
print(name,i)
foriinrange(10):
T=threading.Thread(target=thread_task,args=(str(i),i))
T.start()
time.sleep(10)# <---------------------------!
但目前(在许多平台上)线程不是并行运行的,而是按顺序依次执行!原因是系统线程调度器在前一个线程阻塞之前不会启动新线程。
简单的解决方法是在运行函数的开始处加一个时间很短的 sleep。
defthread_task(name,n):time.sleep(0.001)# <--------------------!
foriinrange(n):
print(name,i)
foriinrange(10):
T=threading.Thread(target=thread_task,args=(str(i),i))
T.start()
time.sleep(10)
比起用 time.sleep()
猜一个合适的等待时间,使用信号量机制会更好些。有一个办法是使用 queue
模块创建一个 queue 对象,让每一个线程在运行结束时 append 一个令牌到 queue 对象中,主线程中从 queue 对象中读取与线程数量一致的令牌数量即可。
以上是 python线程都没有运行,为什么? 的全部内容, 来源链接: utcz.com/z/520613.html