如何學會多執行緒工作?

時間 2021-05-07 07:37:49

1樓:dboy

你假設自己漂亮的大腦是個多核CPU,是很天真的。它不是,你是乙個人,有七情六慾,不是計算器,計算資源可以N等分水平擴充套件,但人腦不是,注意力是做好工作的必備資源,如果注意力可以隨意切分,就不會叫注意力了,太Sunny如果不能匯聚到一點是煮不開水的,光束再多也沒用。

絕不多個主要目標齊頭並進,你可以有次要目標,拿來調劑,但次要目標絕不干擾主要目標。

這聽起來很容易做到,但很多時候人會發現主要目標推進中有很多時間空隙,所以見縫插針,做些不相干的事情。如果執行主要目標時發現很多時間空隙,只說明乙個問題:你在主要目標上投入的時間還不夠多。

必須有主次,有主無次也沒關係,「保證」主要目標的時間投入先,而不是為了「多執行緒」妥協主要目標的執行。如果一時沒有主要目標,就不要隨便往裡填東西,有些事情不重要就是不重要。

關鍵的工作很少勻速直線推進,而是緩慢曲/折線運動的前提下多次短暫衝刺(burst),80%的緩慢作業是為那20%迅速突破所作的準備工作,20%的作業產生80%的輸出。

你也許是個中好手,一次接八個球,但你的注意力(能量)會消耗得非常快,你的能量是有限的,大腦不是可以無限做功的器官。要勇敢地做減法,「堅決不做」和「專心做」同樣重要。

如果你總是把能快速獲得結果的事置於最高優先順序,你就是在訓練你的大腦失去耐心,久而久之你很難對那些需要時間但重要的能產生巨大影響的事產生動機,無節制的多執行緒,短平快的期望,會讓你成為工作中忙碌且自我感覺良好的庸人。

2樓:

講道理,單cpu(大腦),如果不操作io等的話,單執行緒跟多執行緒恐怕差不到哪去吧。

然而很遺憾,我覺得生活中的大多數正事都是無需等待io(比如做飯前還沒買鹽之類的)的,而適合多執行緒的時候(比如等外賣的時候),我往往會默默開啟知乎⊙ω⊙。

然後就特喵的就往忘切回去了。。。

還是單執行緒好

3樓:

我的理解,這個是不是類似於小學數學中的泡茶問題在燒水的同時可以順便準備茶葉、洗杯子等

日常工作中這種型別的情況很多呀

利用穿插的碎片時間完成一些小事情

但是這種習慣和素質真的不是培養出來的是天性

4樓:

題主,人類要是單執行緒早就死無數遍了好嗎,呼吸的時候還能幹別的嗎?

題主明明就想在主線程中開闢多個子執行緒,然後又在子執行緒中呼叫主線程。會造成執行緒死鎖好嗎。

所以,大腦是執行緒安全的

5樓:BT之神

6樓:劉釗宇

最近苦於身邊玩具和想學的東西太多,所以如何盡最大可能同時進行,我覺得大腦方面主要是快取不足和排程機制混亂吧。。。。要提高可行性應該著手於記憶力鍛鍊以及樹立一套明確的優先順序的任務。。。但無奈的是裝置獨佔的問題,比如說聽歌的時候就不可能去慕課也不能同時推Gal。

所以解決裝置獨佔也是多線的乙個問題。基於這個考慮,就可以建立非衝突pattern嘗試同步執行。。。個人是吃飯左撇子,以前的經驗是一邊吃飯一邊做作業。

7樓:李靜

吐槽篇,我確實沒有學會多執行緒的工作,說下現狀:

每天高峰的時刻,同時有4款不同型別的產品問題等待處理,這個還不算,可能還會有個技術合同等待評審,功能文件需要完成,過了一會,其他人,又告訴你,有個專案,需要跟進,有個出差需要支援。

想到這些就頭痛,分輕重緩急,嚴重程度,可是有時連軸轉的程度,加上別人的指責,加上別人的理所應當你該做的,你都不知道自己欠了誰的?這樣的多執行緒工作,乙個月中會出現三分之二的時間,你該怎麼做?

8樓:

個人認為是有方法的,親測成功。(但是作用範圍稍片面)方法:1.先做一會幾個執行緒中比較需要靈感與創造的那一項。

2.休息一會,期間保持思考。

3.再做一會幾個執行緒中比較機械,不太需要專注的那一項。

4.重點來了,此時有意識地,強行地抑制不去想第乙個任務的事情,抑制方法參見如何做到長時間(4 個小時以上)精神專注?

5.你會發現你關於第乙個任務的靈感在穩定地流出,而這正是解決問題的關鍵。

6.不要停!繼續第二個任務,把靈感用一張紙簡要地記下來。

7.你成功了。

9樓:

你確定這是好習慣??我管這叫「走神」,我覺得自己。無法長時間集中精力在一件事上,於是常常幾個工作同步開展,分別完成,否則,我乙個都無法完成

10樓:

這又是乙個say no first的問題,就象講「如何高效地開會」這個主題,諸般技巧精彩紛呈,但其實最高效就是想辦法不開會 :-) 同樣,這個問題最好的解決辦法就是決不多執行緒工作!

但是,人在江湖漂,哪有不挨刀!不主動找多執行緒不意味著多執行緒不來找你,所以要建立一些類似汽車保險槓的防護機制。

我的做法如下:

1. 短期記憶大腦記憶體有限,最多同時記下7件不相關的事,再多就必須想辦法找聯絡合併了。同時我發現自己的認知模式是只有寫下來才能記得住,既不是聽覺模式,也不是視覺模式。

所以我靠多寫,把這些零散的知識性的東西串聯起來構造成上下文相關的場景,自然就不怕打擾了。

2. 在思考問題的時候隨想隨記,一旦出錯,可以逆推回去,重新推導,不會忘掉。

3. 晨寫是個好寶貝,就是利用早上剛睡醒無多執行緒的時候將潛意識裡惦記的那些好問題收穫一下!反之,晚上寫日記就是一堆碎碎念了。。。

據說,人在一天裡腦袋中的雜念有2萬多個,已經夠亂了,還要自尋煩惱嗷嗷叫著多執行緒麼?

4. 還有乙個辦法,是師傅Tony教我的,先領悟之後再刺激關鍵神經節點轉化為長期記憶,以不變應萬變,自然不怕干擾。

5. 推薦讀一下Andy Hunt的書,

程式設計師的思維修煉 (豆瓣)

別被狗血的書名嚇著,英文叫refactor your wetware,翻譯成」重構你的大腦「更好,其中很好地比較了人腦和電腦的區別,在多工的處理上,判若雲泥。。。

時間少的話,重點看一下第3章認識你的大腦和第8章控制注意力。

11樓:

我最近的習慣是隨手拿乙個列印各專案進度條的A5或A6紙,放在本子裡,每個進度條上隨手記錄milestones和進度百分比。

12樓:動機在杭州

看@採銅老師的精彩回答,我想起來了。實際上多執行緒工作的核心是任務管理:既讓不同任務能夠有序組織而又不相互打擾。

不同任務總是容易相互打擾是因為,我們的大腦有乙個工作台和乙個儲存間。工作台容量有限,是用來打包操作的,沒法堆放太多東西。儲存間就是倉庫,很能堆放東西。

一旦工作台上的任務打包好了,我們就會把它放到儲存間。

未完成的任務,會一直放在工作台,占有注意資源。任務越多,工作台就亂,工作效率就低。就好像頭腦中有一些紅燈在不停亮起,一會那邊的紅燈亮了,你想去那裡救火,那裡還沒結束,這邊的紅燈又亮了,你不得不回來到這邊救火。

火沒救成,火氣倒是上來了。這確實很讓人氣惱和疲憊。

當然最好的方式是一段時間只做一件事,既單執行緒處理。但如果我們不得不同時做很多任務,怎麼讓不同的任務不相互干擾?

這就需要讓大腦先把放到工作台上暫時不做的任務放到儲藏室去。讓大腦以為這些任務已經完成了。怎麼做?

對於任務管理,我們通常的方法,是列出所有要做的事,再一件件去做。這仍相當於把任務放到工作台。更好的方法,是多做一步,列出所有要做的事,然後列出這件事接下來的一步要怎麼做:

處理、擱置還是丟棄?一旦你列出怎麼做以後,大腦會認為你對這件事已經有了主意,成足在胸了,它就會放心地把它從工作台移到儲存間。多執行緒任務不再相互干擾,而變成有效率的單執行緒任務。

等你做的時候,你又可以把這工作從儲存間搬出來。

多做一步。從列出要做哪些事,到列出這些事要怎麼做。你會發現,自己的大腦一下子清靜了。

不知道有沒有跑題。供參考。

13樓:嚴成旺

如果你是MBTI性格型別裡的 IxxJ(我是INTJ),就不要奢望這個了,這個不適合你(也不適合我)。

這個性格適合獨自沉思,縝密思考,不擅長多執行緒。

所以,除非形勢所迫,否則不必為難自己。

14樓:陌辭寒

人畢竟不是電腦,沒有多核甚至多cpu,雖然有時看似可以同時做多件事,如邊看書邊聽歌,但實際同一時間也只會做其中乙個,只是大腦切換比較頻繁。如果你突然對書中某一段感興趣了,看完就會發現期間雖然在聽歌,但只是進了耳朵沒有進大腦,完全記不得了。

提高工作效率的管理不是同時做多件事,而是集中精力做一件事,並且從一件事切換到另一件事時,要盡快投入狀態。

實際上是沒必要多件事情同時做的。我的任務表裡平時都是排著10件事以上,基本沒有少於5件的時候。但我很少想事情怎麼這麼多啊,什麼時候才能做完。

各個擊破是最簡單的道理,事情再多也是有數量的,把能想到的事情一一列上,根據個人喜好一次處理。

提高單一事情的效率關鍵在於避免被打斷,這個打斷可以是外界的,如某人找你有事,去喝個水,也可能是內在的,如精力不集中想別的。未經過訓練的話,人集中精力的時間是比較短暫的,但習慣了後達到1小時以上是沒有太大問題的,這樣就足夠了,一般很少有什麼事情不可以分塊成1小時以內時間來處理。

然後就是被打斷後恢復,或者切換到其他事情也需要一定時間來進入狀態。有些時間管理說這個時間可能長達15分鐘。個人感覺沒有那麼恐怖,習慣了後一般2分鐘以內就可以。

還有至關重要的一點,這個很少有書會寫到,就是減少工作時間。

很多人說提高工作效率,然後再加長工作時間,然後工作量成倍增長。我都會淡然一笑。工作效率和工作時間是有關係的,人的精力是有限的,加長工作時間必然降低工作效率。

因為工作效率低而被迫加長工作時間,而過長的工作時間讓工作效率無法提高,從而持續惡化。那如果已經陷入這種境地如何處理呢。很簡單,工作效率是很難立即提高的,但工作時間自己可以控制,減少工作時間。

那減少工作時間,事情不就更完不成了嗎。開始的確是這樣,但堅持幾天後,有更多的休息時間會讓你精力更加集中,從而工作效率開始提高。然後繼續減少工作時間,如此繼續。

那減少到多長時間合適呢,全神貫注工作的精力消耗是很大的,在我看來,一天4個小時便可以讓人感覺很充實,而超過6個小時會讓人感覺很乏累,4個小時就足夠了。加上其中的切換和小塊休息(不包括午休)時間,大概有5-6個小時。想一下一天24個小時,除去睡覺8個小時、吃飯2個小時、工作6個小時,還有8個小時,如果精力不支的話可以完全用來休息,讓然也可以做一些個人愛好之類不吃精力的事情。

這樣才能保證那4個小時真的能夠全神貫注。聽上去好像不可思議,但實際是可行的。拿我現在的工作來說,除了有時白天事情太多頻繁打擾,一些需要整段時間的事情需要另找時間(平均每月2次以內),都可以在白天的6小時內處理完。

之所以不再降低工作時間,並不是對再提高工作效率沒有信心,而是做完了也不能走,別人經常有事情來找,幹坐著或者幹別的不是等著被安排活麼。

多執行緒爬蟲如何停止?

八爪魚採集器 你每次抓取完不都是有狀態的,404,301,200之類的,來判斷你是否這一位址是否採集完成 你要廣度還是深度,都是有層級的,這就讓你總的鏈結是可控的你應該得有佇列池的概念,重試的概念 另外,這問題描述得真不清楚,建議你看一下搜尋引擎原理吧 cloudy 按照你的設計思路,看起來是每個w...

關於多執行緒程式設計和CPU多核多執行緒的關係?

佐佐浪 具體到你的例子,修改優先順序和修改時間片是無法達到這個效果的。你需要做的是把你的計算部分做成並行的。單獨乙個執行緒是達不到你要的效果的。 棒子先生 首相我們了解下為什麼需要用到4核,這是由於不能盲目的提高CPU的主頻和頻寬,這樣會產生各種實際很難處理的問題,比如溫度飆公升等。舉例來說我們需要...

python多執行緒爬蟲設計?

深海淺港少女與夢 使用多執行緒是因為get頁面所需時間非常長,是後面步驟的幾十上百倍,所以,後面的步驟用不用多執行緒都不是問題。另外 node crawler寫爬蟲好寫不累,一口氣寫5個不喘氣,誰用誰知道! 笑虎 假設乙個爬蟲步驟分為 獲取,解析,儲存。那麼在設計多執行緒爬蟲時應該是乙個執行緒完成這...