不懂python中调用线程的方法?其实想解决这个问题也不难,下面让小编带着大家一起学习怎么去解决,希望大家阅读完这篇文章后大所收获。

Python调用线程有两种情况,一种是在主线程中直接调用,还一种是直接在其他方法中调用线程

在传递参数的方式上有所区别,两种调用方法如下

1. 主进程中直接调用线程:

fromthreadingimportThreadimporttimedefsayhi(name,input,number):foriinrange(1,10):ifnumber=="线程号1":time.sleep(2)print("这是线程号:%s-%ssayhello%s-%s"%(number,name,str(i),input))else:time.sleep(1)print("线程号:%s-%ssayhello%s-%s休息1秒"%(number,name,str(i),input))if__name__=='__main__':foriinrange(1,3):t=Thread(target=sayhi,args=('mike','toyou',"线程号"+str(i)))t.start()print("主线程结束")

2.在方法中调用线程:

在方法中调用线程的时候,如果不想另外写一个class,也不想用self参数,

在写Thread(target=Th3, args=(input,))的时候,记得args数的最后中加一个“逗号”,这样表明你传的是一个数据元组

否则会报“takes 1 positional argument but 2 were given”这种错误,因为传入的参数数量识别时出现了问题

#-*-coding:utf-8-*-importtimefromthreadingimportThreaddefdoWork(input):globalintervaltry:print("begin")if"DERNAV"ininput.upper():t=Thread(target=Th2,args=(input,))t.start()elif"PBD9008"ininput.upper():t=Thread(target=Th3,args=(input,))t.start()exceptExceptionase:print(e)defTh2(input):foriinrange(1,10):print(input+"_"+time.strftime('%Y.%m.%d%H:%M:%S'))time.sleep(1)defTh3(input):foriinrange(1,10):print(input+"_"+time.strftime('%Y.%m.%d%H:%M:%S'))time.sleep(2)defrun(interval):whileTrue:try:doWork("PBD9008")doWork("DERNAV")time_remaining=interval-time.time()%intervaltime.sleep(time_remaining)exceptExceptionase:print(e)if__name__=='__main__':globalintervalinterval=300text=run(interval)

感谢你能够认真阅读完这篇文章,希望小编分享python中调用线程的方法内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!