1、初步了解threading
python中线程的操作主要由threading与thread模块来实现,而threading提供的功能在比thread稍强大些。
2、threading类提供的方法
- run(): 用以表示线程活动的方法。
- start():启动线程活动。
- join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
- isAlive(): 返回线程是否活动的。
- getName(): 返回线程名。
- setName(): 设置线程名。
- setDaemon():设置为后台线程或前台线程(默认)如果是后台线程,主线程执行过程中,后台线程也在执行,主线程执行完毕后,后台线程不论成功与否,均停止;如果是前台线程,主线程执行过程中,前台线程也在执行,主线程执行完毕后,等待前台线程也执行完成后,程序停止。
3、创建线程的两种方法
①直接调用启动线程
#coding=UTF-8
import threading
import time
def whatfuck(num):#定义每个线程要用到的函数whatfuck,传入什么数则打印输出什么数
print'Running number:',num
time.sleep(10)
if __name__=="__main__":#下面会进行详细说明
t1=threading.Thread(target=whatfuck,args=(3,))#创建一个线程t1
t2=threading.Thread(target=whatfuck,args=(22,))#创建另一个线程t2
#target指要执行的方法
#args指要传入方法的参数
t1.start()
t2.start()#启动线程
print(t1.getName())
print(t2.getName())#获取线程名
t1.join()
t2.join()#阻塞主线程,等待子线程t1、t2分别结束后再往下执行下面的代码
print('ending……')
PS:
if __name__=="__main__":当别的文件调用此文件程序时,可以不用执行全局代码(最外层的代码)。上代码来体会比较一下:
def Hanshu():
if __name__=="__main__"
print('Hanshu')#当别的文件调用Hanshu()时,不会print Hanshu
def Hanshu():
print('Hanshu')
#当别的文件调用Hanshu()时,会print Hanshu
②继承式调用启动线程
(还未彻底明白具体python实现方法,在此便不加以具体说明。附友情链接:https://www.cnblogs.com/zhangxinqi/p/8284687.html)