码迷,mamicode.com
首页 > 编程语言 > 详细

萌新python多线程

时间:2018-08-21 16:33:30      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:开始学习   pre   -o   大于   from   python多线程   src   star   start   

刚开始学习多线程的时候闹了个笑话在使用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多线程

标签:开始学习   pre   -o   大于   from   python多线程   src   star   start   

原文地址:http://blog.51cto.com/853056088/2162487

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!