在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ python3 threading執(zhí)行順序

python3 threading執(zhí)行順序

def __thread_job():
    print('這是一個(gè)新線程: %s' % threading.current_thread());

    print('T1 start \n');

    for i in range(10):
        time.sleep(0.1);


    print('T1 finished');


def show_threading():
    thread = threading.Thread(target=__thread_job, name='T1');

    thread.start();



if(__name__ == '__main__'):
    show_threading();

    print('done');

多次執(zhí)行會(huì)返回兩個(gè)結(jié)果
圖片描述

圖片描述

請(qǐng)問(wèn)為什么會(huì)出現(xiàn)第二個(gè)結(jié)果呢。

回答
編輯回答
離夢(mèng)

這個(gè)應(yīng)該是多線程鎖的問(wèn)題。

以下內(nèi)容摘自網(wǎng)絡(luò):

多線程和多進(jìn)程最大的不同在于,多進(jìn)程中,同一個(gè)變量,各自有一份拷貝存在于每個(gè)進(jìn)程中,互不影響,而多線程中,所有變量都由所有線程共享,所以,任何一個(gè)變量都可以被任何一個(gè)線程修改,因此,線程之間共享數(shù)據(jù)最大的危險(xiǎn)在于多個(gè)線程同時(shí)改一個(gè)變量,把內(nèi)容給改亂了。

線程調(diào)度本質(zhì)上是不確定的,因此,在多線程程序中錯(cuò)誤地使用鎖機(jī)制可能會(huì)導(dǎo)致隨機(jī)數(shù)據(jù)損壞或者其他的異常行為,我們稱之為競(jìng)爭(zhēng)條件。為了避免競(jìng)爭(zhēng)條件,最好只在臨界區(qū)(對(duì)臨界資源進(jìn)行操作的那部分代碼)使用鎖。

Python Cookbook里面有一章節(jié)詳細(xì)的簡(jiǎn)述該話題。
給關(guān)鍵部分加鎖

2018年6月25日 18:35