python线程都没有运行,为什么?

python

一旦主线程退出,所有的子线程都会被杀掉。你的主线程运行得太快了,子线程还没来得及工作。

简单的解决方法是在程序中加一个时间足够长的 sleep,让子线程能够完成运行。

importthreading,time

defthread_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

回到顶部