python-threading多線程理解與應用

涉及到線程恃慧,就會存在阻塞和非阻塞肺魁、同步和異步呵扛。

阻塞和非阻塞
強調(diào)的是程序在等待調(diào)用結果(消息每庆,返回值)時的狀態(tài). 阻塞調(diào)用是指調(diào)用結果返回之前,當前線程會被掛起今穿。調(diào)用線程只有在得到結果之后才會返回缤灵。非阻塞調(diào)用指在不能立刻得到結果之前,該調(diào)用不會阻塞當前線程蓝晒。 對于同步調(diào)用來說腮出,很多時候當前線程還是激活的狀態(tài),只是從邏輯上當前函數(shù)沒有返回而已拔创,即同步等待時什么都不干利诺,白白占用著資源。

同步和異步
強調(diào)的是消息通信機制 (synchronous communication/ asynchronous communication)剩燥。所謂同步慢逾,就是在發(fā)出一個"調(diào)用"時,在沒有得到結果之前灭红,該“調(diào)用”就不返回侣滩。但是一旦調(diào)用返回,就得到返回值了变擒。換句話說君珠,就是由“調(diào)用者”主動等待這個“調(diào)用”的結果。而異步則是相反娇斑,"調(diào)用"在發(fā)出之后策添,這個調(diào)用就直接返回了材部,所以沒有返回結果。換句話說唯竹,當一個異步過程調(diào)用發(fā)出后乐导,調(diào)用者不會立刻得到結果。而是在"調(diào)用"發(fā)出后浸颓,"被調(diào)用者"通過狀態(tài)物臂、通知來通知調(diào)用者,或通過回調(diào)函數(shù)處理這個調(diào)用

參考博客:https://blog.csdn.net/huangqiang1363/article/details/79508852

實際應用場景:
python-locust單機分布式壓測产上。
當locust以分布式運行啟動master主機后棵磷,線程是阻塞的,會等待n個worker鏈接晋涣。要實現(xiàn)的最終效果為用subprocess.Popen先啟動master主機仪媒,接著啟動n個worker。這樣就不需要每次都打開三四五六七八個終端窗口來啟動n個worker姻僧,具體實現(xiàn)代碼如下:

#入?yún)orker默認為1规丽,運行一個master,一個worker
def demo(worker=1):
    master_worker = ['master']
    for num in range(worker):
        master_worker.append("worker")
    start_worker_number = worker
    worker_num = -1
    for i in master_worker:
        worker_num += 1
        if i == 'master' :
            #創(chuàng)建master線程
            t = threading.Thread(target=LocustThreading(locust=i, num=start_worker_number).create_tread)
            t.start() #啟動 master撇贺,不能用join()方法赌莺,否則會阻塞,不會啟動worker
            time.sleep(3)
        else:
            #創(chuàng)建worker線程
            t = threading.Thread(target=LocustThreading(locust=i, num=worker_num).create_tread)
            t.start() #啟動 worker
            time.sleep(2)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末松嘶,一起剝皮案震驚了整個濱河市艘狭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翠订,老刑警劉巖巢音,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異尽超,居然都是意外死亡官撼,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門似谁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傲绣,“玉大人,你說我怎么就攤上這事巩踏⊥核校” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵塞琼,是天一觀的道長菠净。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么毅往? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任牵咙,我火速辦了婚禮,結果婚禮上攀唯,老公的妹妹穿的比我還像新娘霜大。我一直安慰自己,他們只是感情好革答,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著曙强,像睡著了一般残拐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碟嘴,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天溪食,我揣著相機與錄音,去河邊找鬼娜扇。 笑死错沃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的雀瓢。 我是一名探鬼主播枢析,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼刃麸!你這毒婦竟也來了醒叁?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤泊业,失蹤者是張志新(化名)和其女友劉穎把沼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體吁伺,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡饮睬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了篮奄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捆愁。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宦搬,靈堂內(nèi)的尸體忽然破棺而出牙瓢,到底是詐尸還是另有隱情,我是刑警寧澤间校,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布矾克,位于F島的核電站,受9級特大地震影響憔足,放射性物質(zhì)發(fā)生泄漏胁附。R本人自食惡果不足惜酒繁,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望控妻。 院中可真熱鬧州袒,春花似錦、人聲如沸弓候。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菇存。三九已至夸研,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間依鸥,已是汗流浹背亥至。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贱迟,地道東北人姐扮。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像衣吠,于是被迫代替她去往敵國和親茶敏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 每一個程序的運行都是一個進程蒸播,而每個進程至少有一個線程睡榆,稱之為主線程。舉個例子:食堂吃飯是一個進程袍榆,為了讓學生更快...
    小梨的十三閱讀 913評論 0 1
  • Java線程池 [toc] 什么是線程池 線程池就是有N個子線程共同在運行的線程組合胀屿。 舉個容易理解的例子:有個線...
    石家志遠閱讀 1,289評論 0 6
  • Flutter默認是單線程任務處理的,如果不開啟新的線程包雀,任務默認在主線程中處理宿崭。 事件隊列 和iOS應用很像,在...
    羈擁_f357閱讀 569評論 0 1
  • 前言 線程池可以說是 Java 進階必備的知識點了才写,也是面試中必備的考點葡兑,可能不少人看了這篇文章后能對線程池工作原...
    Java李太白閱讀 343評論 0 1
  • 為什么js采用單線程 為了避免復雜性,比如操作DOM赞草,會引起復雜的同步問題讹堤,故從一誕生,JavaScript就是單...
    dayindayout閱讀 1,386評論 0 1