python之多线程threading初探

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)

猜你喜欢

转载自blog.csdn.net/qq_38680693/article/details/79885588