多线程任务技巧

多线程任务技巧

 这里介绍一个编程技巧,适用场景为多部设备一起执行任务时可以让子线程的任务都执行完,然后执行主线程的任务。

 三大情况,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

  可以看到输出结果是三个子线程任务结束后,主线程继续执行。

posted on 2017-01-04 15:45  lexn  阅读(98)  评论(0)    收藏  举报

导航