并發(fā)編程之線程

啟動與停止線程

  • 庫可以在單獨的線程中執(zhí)行任何的在Python中可以調(diào)用的對象
import time
from threading import Thread

def countdown(n):
    while n > 0:
        print('T-minus', n)
        n -= 1
        time.sleep(1)

t = Thread(target=countdown, args=(6,))
t.start()
t.join()  # 調(diào)用線程t的join()函數(shù),會把這個線程t加入到當前線程(這里就是主線程)贪婉,當前線程就會等待線程t的終止涮总,才執(zhí)行后續(xù)內(nèi)容

當你創(chuàng)建好一個線程對象后,該對象并不會立即執(zhí)行炼吴,除非你調(diào)用它的start()方法(當你調(diào)用start()方法時味滞,它會調(diào)用你傳遞進來的函數(shù),并把你傳遞進來的參 數(shù)傳遞給該函數(shù))疙挺。Python中的線程會在一個單獨的系統(tǒng)級線程中執(zhí)行(比如說一個POSIX線程或者一個Windows線程)扛邑,這些線程將由操作系統(tǒng)來全權管理。線程一旦 啟動铐然,將獨立執(zhí)行直到目標函數(shù)返回蔬崩。你可以查詢一個線程對象的狀態(tài),看它是否還在 執(zhí)行:

if t.is_alive():
    print("Still running")
else:
    print("Completed")

對于需要長時間運行的線程或者需要一直運行的后臺任務搀暑,你應當考慮使用后臺線程沥阳。這些線程會在主線程終止時自動銷毀。例如:

t = Thread(target=countdown, args=(6,), daemon=True)
t.start()
  • 由于全局解釋鎖(GIL)的原因,Python的線程被限制到同一時刻只允許一個線 程執(zhí)行這樣一個執(zhí)行模型自点。所以桐罕, 的線程更適用于處理I/O和其他需要并發(fā)執(zhí) 行的阻塞操作(比如等待I/O、等待從數(shù)據(jù)庫獲取數(shù)據(jù)等等)桂敛,而不是需要多處理器并行的計算密集型任務功炮。

線程間通信

  • 線程間數(shù)據(jù)是共享的,沒什么好說的

給關鍵部分加鎖

image.png

創(chuàng)建線程池

  • 使用ThreadPoolExecutor相對于手動實現(xiàn)的好處是它使得任務提交者更方便的從被調(diào)用函數(shù)中獲取返回值术唬。


    image.png

例子中返回的handle對象會幫你處理所有的阻塞與協(xié)作死宣,然后從工作線程中返回數(shù)據(jù)給你。特別的碴开, 操作會阻塞進程直到對應的函數(shù)執(zhí)行完成并返回一個 結果毅该。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市潦牛,隨后出現(xiàn)的幾起案子眶掌,更是在濱河造成了極大的恐慌,老刑警劉巖巴碗,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件朴爬,死亡現(xiàn)場離奇詭異,居然都是意外死亡橡淆,警方通過查閱死者的電腦和手機召噩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逸爵,“玉大人具滴,你說我怎么就攤上這事∈螅” “怎么了构韵?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我疲恢,道長凶朗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任显拳,我火速辦了婚禮棚愤,結果婚禮上,老公的妹妹穿的比我還像新娘杂数。我一直安慰自己宛畦,他們只是感情好,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布耍休。 她就那樣靜靜地躺著,像睡著了一般货矮。 火紅的嫁衣襯著肌膚如雪羊精。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天囚玫,我揣著相機與錄音喧锦,去河邊找鬼。 笑死抓督,一個胖子當著我的面吹牛燃少,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播铃在,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼阵具,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了定铜?” 一聲冷哼從身側響起阳液,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揣炕,沒想到半個月后帘皿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡畸陡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年鹰溜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丁恭。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡曹动,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出牲览,到底是詐尸還是另有隱情仁期,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站跛蛋,受9級特大地震影響熬的,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赊级,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一押框、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧理逊,春花似錦橡伞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至羡洛,卻和暖如春挂脑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背欲侮。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工崭闲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人威蕉。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓刁俭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親韧涨。 傳聞我的和親對象是個殘疾皇子牍戚,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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