廿玖-Python 多線程之與 NodeJS 不同之處

1. 多線程與停等

一直寫著 JS帆调,所以覺得虹钮,如果你在 Python 用一個(gè) threading.Timer 的話喻鳄,就像 JSsetTimeout 其余東西都是會(huì)繼續(xù)運(yùn)行陋葡,而不是會(huì)等這個(gè) threading.Timer 運(yùn)行完之后才繼續(xù)進(jìn)行奈附。
但結(jié)果卻是腮出,他其實(shí)是放進(jìn)同一個(gè)線程怀偷,等一個(gè) threading.Timer 完成之后再完成第二個(gè) threading.Timer 宠叼,你必須新建一個(gè)線程鄙皇。
就是所說的異步同步之迷惘芜赌。

graph LR
NodeJS
A[主程序] -. setTimeout 1 .-> B((執(zhí)行程序 1))
B -- setTimeout 1--> B
A[主程序] -. setTimeout 2 .-> D((執(zhí)行程序 2))
D -- setTimeout 2--> D
graph LR
Python
A[主程序]  -. threading.Timer 1.-> B((執(zhí)行程序 1))
B -- threading.Timer 1 --> B
B --需要等執(zhí)行程序 1完成 -->D
A[主程序] -. threading.Timer 2 .-> D((執(zhí)行程序 2))
D -- threading.Timer 2--> D

2. 參考文章

Python多任務(wù)(利用threading創(chuàng)建線程時(shí)傳入?yún)?shù)--args參數(shù))
python threading.enumerate()查看線程數(shù)量(多線程二)
python線程數(shù)量與線程池添加鏈接描述

3. 實(shí)驗(yàn)

實(shí)驗(yàn)的函數(shù)為:

def TestThreading(t):
    time.sleep(6)
    print('Now It\'s :'+ str(t))
    # print('  Now enumerate is :'+str(len(threading.enumerate())))
    print('  Now activeCount is :'+str(len(threading.enumerate())))
    TT=threading.Timer(2, TestThreading(t+1))
    TT.start()

3.1 實(shí)驗(yàn)1

調(diào)用函數(shù)為:

threading.Timer(2, TestThreading(0)).start()
threading.Timer(2, TestThreading(100)).start()
threading.Timer(2, TestThreading(200)).start()
threading.Timer(2, TestThreading(300)).start()

輸出為:

Now It's :0
  Now activeCount is :1
Now It's :1
  Now activeCount is :1
Now It's :2
  Now activeCount is :1
Now It's :3
  Now activeCount is :1
Now It's :4
  Now activeCount is :1
Now It's :5
  Now activeCount is :1

明顯看出,其實(shí)線程還是只有一個(gè)伴逸,只有當(dāng)其中一個(gè)線程完全完成了自己的任務(wù) ( TestThreading(0) )后才會(huì)調(diào)用下一個(gè)任務(wù) ( TestThreading(100) )缠沈。

3.2 實(shí)驗(yàn)2

調(diào)用函數(shù)為:

def Go(t):
    TestThreading(t)

threading.Thread(target = Go,args=(0,)).start()
threading.Thread(target = Go,args=(100,)).start()
threading.Thread(target = Go,args=(300,)).start()

輸出為:

Now It's :300
Now It's :100
  Now activeCount is :4
  Now activeCount is :4
Now It's :0
  Now activeCount is :4
Now It's :301
  Now activeCount is :4
Now It's :101
  Now activeCount is :4
Now It's :1
  Now activeCount is :4
Now It's :302
  Now activeCount is :4
Now It's :102
  Now activeCount is :4
Now It's :2
  Now activeCount is :4
Now It's :303
  Now activeCount is :4
Now It's :103
Now It's :3
  Now activeCount is :4
  Now activeCount is :4
Now It's :304
  Now activeCount is :4
Now It's :104
  Now activeCount is :4
Now It's :4
  Now activeCount is :4
Now It's :305
  Now activeCount is :4
Now It's :105
  Now activeCount is :4
Now It's :5
  Now activeCount is :4

4. 我真的討厭異步與同步

不同語言之間的特性差別真的差很遠(yuǎn),所以我覺得有時(shí)候错蝴,我真的不想編程洲愤,我寧愿做一個(gè)自由自在的人,認(rèn)真的活著顷锰。
了解語言之間的差別柬赐,才是認(rèn)真的事。

5. 為什么我會(huì)找到這個(gè)問題官紫?

其實(shí)我本來是不知道的肛宋,但我在做爬蟲的時(shí)候發(fā)現(xiàn),執(zhí)行完一次之后束世,為什么幾個(gè)小時(shí)也不重新開始爬新的頁面酝陈?
因?yàn)槲沂呛孟?NodeJS 那樣設(shè)定時(shí)間的,之前在 Django 也是直接用 threading.Timer 的毁涉,為什么會(huì)產(chǎn)生等待那么長時(shí)間才執(zhí)行下一次程序 ( 我也不想細(xì)看 Django線程是怎么做的了 ) 呢沉帮。答案就在這里,我討厭異步薪丁。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末遇西,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子严嗜,更是在濱河造成了極大的恐慌粱檀,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漫玄,死亡現(xiàn)場離奇詭異茄蚯,居然都是意外死亡压彭,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門渗常,熙熙樓的掌柜王于貴愁眉苦臉地迎上來壮不,“玉大人,你說我怎么就攤上這事皱碘⊙唬” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵癌椿,是天一觀的道長健蕊。 經(jīng)常有香客問我,道長踢俄,這世上最難降的妖魔是什么缩功? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮都办,結(jié)果婚禮上嫡锌,老公的妹妹穿的比我還像新娘。我一直安慰自己琳钉,他們只是感情好势木,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著槽卫,像睡著了一般跟压。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上歼培,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天震蒋,我揣著相機(jī)與錄音,去河邊找鬼躲庄。 笑死查剖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的噪窘。 我是一名探鬼主播笋庄,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼倔监!你這毒婦竟也來了直砂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤浩习,失蹤者是張志新(化名)和其女友劉穎静暂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谱秽,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洽蛀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年摹迷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片郊供。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峡碉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出驮审,到底是詐尸還是另有隱情鲫寄,我是刑警寧澤,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布疯淫,位于F島的核電站塔拳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏峡竣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一量九、第九天 我趴在偏房一處隱蔽的房頂上張望适掰。 院中可真熱鬧,春花似錦荠列、人聲如沸类浪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽费就。三九已至,卻和暖如春川队,著一層夾襖步出監(jiān)牢的瞬間力细,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國打工固额, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眠蚂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓斗躏,卻偏偏與公主長得像逝慧,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啄糙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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