close

Python - 多線程 join 的使用

 

============

def T1_job():
    print("T1 start\n")
    for i in range(10):
        time.sleep(0.1)
    print("T1 finish\n")


def T2_job():
    print("T2 start\n")
    print("T2 finish\n")


thread_1 = threading.Thread(target=T1_job, name='T1')          #  指定線程
thread_2 = threading.Thread(target=T2_job, name='T2')
thread_1.start()                                                                            # 开启線程 T1
thread_2.start()                                                                            # 开启線程 T2

thread_1.join()                                  Python - 多線程 join 的使用                                           # 等到T1完成後,才會繼續下一 步


print("all done\n")

 

>>>>

T1 start
T2 start
T2 finish
T1 finish
all done

==================================

Python - 多線程 lock 的使用

 

import threading

def job1():
    global A,lock
    lock.acquire()
    for i in range(10):
        A+=1
        print('job1',A)
    lock.release()

def job2():
    global A,lock
    lock.acquire()
    for i in range(10):
        A+=10
        print('job2',A)
    lock.release()

if __name__== '__main__':
    lock=threading.Lock()
    A=0
    t1=threading.Thread(target=job1)                      #  使用 lock 鎖住 A , 不讓其他程式調用 ,直到使用完畢
    t2=threading.Thread(target=job2)
    t1.start()
    t2.start()
    t1.join()
    t2.join()

>>>

job1 1
job1 2
job1 3
job1 4
job1 5
job1 6
job1 7
job1 8
job1 9

job1 10
job2 20
job2 30
job2 40
job2 50
job2 60
job2 70
job2 80
job2 90
job2 100
job2 110

==========================================

參考

https://morvanzhou.github.io/tutorials/python-basic/threading/3-join/

https://morvanzhou.github.io/tutorials/python-basic/threading/6-lock/

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 ricky10116r2d2 的頭像
    ricky10116r2d2

    ricky10116r2d2的部落格

    ricky10116r2d2 發表在 痞客邦 留言(0) 人氣()