萌新python多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了萌新python多线程相关的知识,希望对你有一定的参考价值。
刚开始学习多线程的时候闹了个笑话在使用python线程打印东西的时候发现自己定的的线程数据没有打印,找半天都没有找到问题,也没好意思问,自己憋了半天才发现问题!
代码如下:
import threading
def SayHi():
print(‘say hi !‘)
def SeyHello():
print(‘say hello !‘)
print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)
发现这样的输出结果竟然没有函数的输出结果,
一直没有找到原因,然后就在网上找例子,照着网上的例子来做都没问题,但是我自己写就有问题,然后发现网上的例子中多线程,多进程的都导入了时间模块,我就出了时间没加入到脚本中其他的一些都是相同的,然后试着加入时间模块来做,结果发现还是没有输出.
代码如下:
import threading
from time import sleep
def SayHi():
sleep(2)
print(‘say hi !‘)
def SeyHello():
sleep(2)
print(‘say hello !‘)
print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)
但是在一次无意中发现了这样偶尔也能把函数内的数值输出出来,然后一想是不是时间不够?然后在最后面加入了时间终于出来了.
import threading
from time import sleep
def SayHi():
sleep(2)
print(‘say hi !‘)
def SeyHello():
sleep(2)
print(‘say hello !‘)
print(‘start‘)
threading._start_new_thread(SayHi,())
threading._start_new_thread(SeyHello,())
print(‘end‘)
sleep(5)
总结:
由于开启的线程,他们的结束时间可能要大于主进程的时间所以主进程如果不等线程的结束而先于他们结束,主进程一死他们就不能输出了,所以这里要等线程结束了,主进程在结束才能看到输出结果的.
以上是关于萌新python多线程的主要内容,如果未能解决你的问题,请参考以下文章