多线程任务技巧
多线程任务技巧
这里介绍一个编程技巧,适用场景为多部设备一起执行任务时可以让子线程的任务都执行完,然后执行主线程的任务。
三大情况,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
可以看到输出结果是三个子线程任务结束后,主线程继续执行。
浙公网安备 33010602011771号