多线程任务技巧
多线程任务技巧
这里介绍一个编程技巧,适用场景为多部设备一起执行任务时可以让子线程的任务都执行完,然后执行主线程的任务。
三大情况,1for 中子线程start 里面 join 2 for中 start 外面一个实例join 3for 中start 外面全部实例join
这里3效果最好, 1 主线程耗费所有子线程耗时之和,2 耗时一个子线程的join时间,但是不能等待子线程任务结束。3主线程耗时为一个子线程耗时,而且子线程的任务都执行完,然后执行主线程的任务。
from threading import Timer import threading import time from weapontool.ap import FuncTimer ft = FuncTimer() @ft.functimer def testfunc(): ft = FuncTimer() @ft.functimer def func1(): print 11 time.sleep(2) print 12 ft = FuncTimer() @ft.functimer def func2(): print 21 time.sleep(2) print 22 ft = FuncTimer() @ft.functimer def func3(): print 31 time.sleep(2) print 32 muti = [] tl = [func1,func2,func3] for i in tl: t = threading.Thread(target=i) muti.append(t) t.start() #t.join(1) for i in muti: i.join() print "end" testfunc() >>> 113121 123222 cust time cust time cust time 222 end cust time 2
可以看到输出结果是三个子线程任务结束后,主线程继续执行。