Python调用线程有两种情况,一种是在主线程中直接调用,还一种是直接在其他方法中调用线程
在传递参数的方式上有所区别,两种调用方法如下
1. 主进程中直接调用线程:
fromthreadingimportThread importtime defsayhi(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=Th2, args=(input,))的时候,记得args数的最后中加一个“逗号”,这样表明你传的是一个数据元组
#-*-coding:utf-8-*- importtime fromthreadingimportThread defdoWork(input): globalinterval try: print("begin") if"DERNAV"ininput.upper(): t=Thread(target=Th1,args=(input,)) t.start() elif"PBD9008"ininput.upper(): t=Thread(target=Th2,args=(input,)) t.start() exceptExceptionase: print(e) defTh1(input): foriinrange(1,10): print(input+"_"+time.strftime('%Y.%m.%d%H:%M:%S')) time.sleep(1) defTh2(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()%interval time.sleep(time_remaining) exceptExceptionase: print(e) if__name__=='__main__': globalinterval interval=300 text=run(interval)原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容