亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

15分鐘并行神器gnu parallel入門指南

2024-09-01 13:56:28
字體:
來源:轉載
供稿:網友

GNU Parallel是一個shell工具,為了在一臺或多臺計算機上并行的執行計算任務。本文簡要介紹GNU Parallel的使用。

并行神器,gnu,parallel

這個cpu是多核的。

一般兩核是這樣工作的的:

并行神器,gnu,parallel

四核是這樣工作的:

并行神器,gnu,parallel

16核是這樣工作的:

并行神器,gnu,parallel

好了不黑了。再黑intel要打我了。

在某個周末的早上百無聊賴之際,花了半天時間過了一遍gnu parallel的man page和tutorial。哈哈,我得說這半天時間花的應該挺值,因為感覺以后它能為我節省的時間不止半天吧。

本文并不會嘗試去翻譯gnu parallel的man page或者tutorial。因為現成的翻譯已經有了,可以看,或者。

但是我前幾次看到 parallel詭異的幾個:::以及奇奇怪怪的 {}{#}{.}{/}占位符之后就打起了退堂鼓,如此丑陋的語法令人無愛啊。還好直接看了一下幾個example壓壓驚,動手試一把,才發現實乃神器也。

本文主要的目的是安利(lure)你使用這個工具,并且告訴你為啥(why)使用和如何(how)使用。

why

使用gnu parallel的目的只要一個,就是為了快!

安裝快

(wget -O - pi.dk/3 || curl pi.dk/3/) | bash

作者說10秒裝好。在國內實際情況可能不夠。但是也不用太久。其實就是一個1萬多行perl單文件腳本(是的,你沒看錯,所有模塊都在這個文件里,這是一個特色~)。我之后都是寫fabric腳本直接拷貝到各個節點機。再chmod一下執行權限。
然后是執行快,它將你的程序并行利用系統的多核執行:
上圖:

并行神器,gnu,parallel

grep 一個  1G 大小的log。

使用parallel  ,和不使用parallel直接grep。結果顯而易見,相差 20 倍。這比用啥 ack,ag優化效果明顯多了。

備注:這是在一個48 核服務器上執行的結果。

how

最簡單的方法就是類比xargs。在xargs里面有一個參數 -P,可以利用多核。

舉個例子:

$ time echo {1..5} |xargs -n 1 sleepreal 0m15.005suser 0m0.000ssys 0m0.000s

這一條xargs把每個echo的數作為參數傳給sleep ,所以一共sleep了 1+2+3+4+5=15秒。

如果使用 -P 參數分給5個核,每個核各sleep 1,2,3,4,5秒,所以執行完之后總共sleep的5秒。

$ time echo {1..5} |xargs -n 1 -P 5 sleepreal 0m5.003suser 0m0.000ssys 0m0.000s

鋪墊結束。一般情況下,parallel的第一種模式,就是替換掉 xargs -P.

比如壓縮一下所有的html文件。

find . -name '*.html' | parallel gzip --best

傳參數模式

第一種模式是利用 parallel傳參數。管道前面進來的作為參數傳給后面的命令,并行執行

比如

huang$ seq 5 | parallel echo pre_placehoder_{}pre_placehoder_1pre_placehoder_2pre_placehoder_3pre_placehoder_4pre_placehoder_5

其中{}是占位符,用來占位傳入參數的位置。

在云計算操作中,經常有批量操作,比如建立10個云硬盤

seq 10 | parallel cinder create 10 --display-name test_{}

建立50個云主機

 

復制代碼代碼如下:
seq 50 | parallel nova boot --image    image_id  --flavor 1 --availability-zone  az_id   --nic vnetwork=private   --vnc-password 000000  vm-test_{}

 

批量刪除云主機

nova list | grep some_pattern| awk '{print $2}' | parallel nova delete

改寫 for loop

可以看到,我其實是把很多需要寫循環的地方用parallel替換了,順帶享受了并行帶來的快捷。
這個道理是這樣的,在進行for循環的時候,是最有可能并行化的,因為被放在循環中的各個對象是上下文無關的。

普世抽象,shell的循環:

 (for x in `cat list` ; do do_something $x done) | process_output

可以直接寫成

 cat list | parallel do_something | process_output

如果loop 里面內容太多了

 (for x in `cat list` ; do do_something $x [... 100 lines that do something with $x ...] done) | process_output

那么最好寫成一個腳本

 doit() { x=$1 do_something $x [... 100 lines that do something with $x ...] } export -f doit cat list | parallel doit

而且還能避免掉很多麻煩的轉義。

--pipe模式

另一種模式就是 parallel --pipe

這時管道前面的不是作為參數,而是標準輸入傳給后面的命令

例如:

cat my_large_log |parallel --pipe grep pattern 

如果不加 --pipe ,相當于 mylog中的每一行都變成 grep pattern line的命令展開了。而加入了--pipe,則和 cat mylog | grep pattern  沒有區別,只是分配到各個核上去執行了。

好了,基本概念就講完了!其他的都只是各個參數具體使用,比如到底用幾個核啊,place_holder的替換啊,各種花樣傳參數啊,并行執行但是保證結果順序輸出(-k),以及神奇的跨節點并行計算啊,看看man page就知道了。

bonus

手邊有了一個轉換成并行的小工具,除了讓你日常執行快一點之外,還有一個好處,就是測并發。

很多接口在并發操作下會出現一些bug,比如有一些判斷數據庫里面沒有加鎖,是在代碼層面判斷的,結果并發請求下去,每個請求在到達服務器的時候是判斷通過,一起寫了之后就超出限制了。之前寫for循環因為是串行執行的,并不會觸發這些問題。但是你要真正測并發的話,又要寫腳本,或者利用python的mulitiprocessing封裝一下。但我手邊有了parallel,又在bashrc里面就加了以下兩個alias

alias p='parallel'alias pp='parallel --pipe -k' 

這樣制造并發太方便了,只需要管道后面加個p , 我就時時刻刻可以制造并發來觀察響應。

舉個例子

seq 50 | p -n0 -q curl 'example.com'

以你核的個數并發請求。-n0的意思是seq輸出不作為參數傳給后面的命令。

八卦時間:gnu界的祥林嫂

作為一個自由軟件八卦愛好者,每次我發現一個新奇的軟件總會去 google一下 關鍵詞 site:https://news.ycombinator.com關鍵詞 site:http://www.reddit.com/??纯达L評如何,并且往往還能在討論中有意外收獲。

然后我再hacker news上看到了一段吐槽,主要就是說每次觸發執行parallel都會彈出一段文字和你說,要是你把這個工具用在學術上的話(很多生命科學相關的都在用這個工具的),要引用他的論文,不然的話你就付他10000歐元吧。我因此學到一個詞,叫Nagware,特指通過啰啰嗦嗦像唐僧那樣煩你要你付錢的軟件。雖然我認為真用到了的確也應該引用一下文章,但是,如同這位同學說的:

I agree it's a great tool, except for the nagware messages and their  content. Imagine if the author of cd or ls had the same attitude...

另外,該作者真是灰常喜歡別人引用他的軟件,以致于在NEWS里面我還看到了:

并行神器,gnu,parallel

原理時間

直接摘抄一下作者在 stackoverflow 的回答

GNU Parallel is a general parallelizer and makes is easy to run jobs in parallel on the same machine or on multiple machines you have ssh access to.

If you have 32 different jobs you want to run on 4 CPUs, a straight forward way to parallelize is to run 8 jobs on each CPU:

并行神器,gnu,parallel

GNU Parallel instead spawns a new process when one finishes - keeping the CPUs active and thus saving time:

并行神器,gnu,parallel

結論

本文主要安利了一個 真 - 并行 工具,解釋了其主要的兩種模式,附贈了一個技巧,八卦了gnu界不為人知的另一面。希望對你有用。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到服務器教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久全球大尺度高清视频| 国产成人在线播放| 亚洲欧美色婷婷| 精品国产欧美一区二区五十路| 国产亚洲免费的视频看| 欧美午夜丰满在线18影院| 精品免费在线观看| 亚洲人在线观看| 国产拍精品一二三| 日韩精品福利在线| 日韩欧美在线视频观看| 久久91精品国产91久久久| 国产精品情侣自拍| 伊人伊成久久人综合网小说| 亚洲精品免费一区二区三区| 亚洲综合最新在线| 欧美一区二区三区……| 亚洲第一网站男人都懂| 国产情人节一区| 色多多国产成人永久免费网站| 91精品国产乱码久久久久久久久| 青青久久aⅴ北条麻妃| 美女精品视频一区| 91av视频在线播放| 欧美国产精品人人做人人爱| 日韩在线视频一区| 亚洲欧美国产va在线影院| 亚洲精品中文字| 性色av香蕉一区二区| 欧美影院成年免费版| 日韩精品极品毛片系列视频| 亚洲精品国产精品国产自| 中文字幕国产亚洲| 欧美精品在线第一页| 亚洲综合成人婷婷小说| 欧美激情2020午夜免费观看| 在线观看视频99| 欧美裸体xxxxx| 日韩欧美视频一区二区三区| 亚洲高清在线观看| 久久国产精品99国产精| 国产精品男人的天堂| 欧美成人激情视频免费观看| 日韩经典一区二区三区| 亚洲黄在线观看| 欧美老少做受xxxx高潮| 在线视频精品一| 亚洲一区二区三区乱码aⅴ| 国产一区二中文字幕在线看| 91精品国产91久久久久福利| 色多多国产成人永久免费网站| 亚洲国产中文字幕在线观看| 亚洲激情成人网| 精品视频在线观看日韩| 亚洲v日韩v综合v精品v| 性欧美办公室18xxxxhd| 国产亚洲视频在线| 日韩中文字幕免费看| www国产精品com| 日韩在线观看免费| 久久久久久久爱| 欧美二区在线播放| 中文日韩在线观看| 97国产真实伦对白精彩视频8| 庆余年2免费日韩剧观看大牛| 日韩黄色高清视频| 日韩美女av在线| 欧美激情小视频| 国产欧美精品一区二区| 欧美日韩午夜剧场| 亚洲欧美日本伦理| 成人黄色在线播放| 精品欧美激情精品一区| 久久香蕉精品香蕉| 777777777亚洲妇女| 亚洲一区999| 国产噜噜噜噜噜久久久久久久久| 久久精品久久久久电影| 久久久精品国产| 中文亚洲视频在线| 国产精品久久久久久久一区探花| 欧美在线视频免费观看| 热久久免费视频精品| 亚洲精品永久免费| 欧美成年人视频网站| 久久影视电视剧免费网站| 正在播放亚洲1区| 一区二区日韩精品| 日韩精品中文字幕在线播放| 91精品国产91久久久久久吃药| 456亚洲影院| 清纯唯美日韩制服另类| 欧美电影在线观看| 日本久久亚洲电影| 亚洲乱码av中文一区二区| 国产99久久精品一区二区 夜夜躁日日躁| 欧美在线视频导航| 成人欧美一区二区三区黑人孕妇| 欧美亚洲激情视频| 日韩免费观看视频| 亚洲成人av在线| 国产精品久久久久久亚洲调教| 欧美日韩亚洲高清| 韩国一区二区电影| 97碰碰碰免费色视频| 欧美国产日韩中文字幕在线| 日韩精品在线视频美女| 久久久久国产一区二区三区| 亚洲第一av在线| 欧美精品免费在线| 亚洲精品美女视频| 精品久久久久久中文字幕大豆网| 亚洲97在线观看| 日韩视频中文字幕| 久久午夜a级毛片| 国产日韩欧美夫妻视频在线观看| 国产精品电影一区| 久久91精品国产91久久跳| 国产精品久久久久久久一区探花| 国产精品偷伦视频免费观看国产| 97视频在线观看免费| 日韩黄色av网站| 红桃视频成人在线观看| 日本不卡免费高清视频| 欧美理论电影网| 狠狠色狠狠色综合日日五| 少妇激情综合网| 久久免费精品视频| 欧美精品免费播放| 亚洲性生活视频在线观看| 韩国美女主播一区| 色99之美女主播在线视频| 日韩有码在线播放| 国产精品一区二区久久久久| 国产精品香蕉av| 国产亚洲精品成人av久久ww| 亚洲韩国日本中文字幕| 日韩在线视频线视频免费网站| 欧美中文在线免费| 91欧美日韩一区| 亚洲精品资源美女情侣酒店| 国产亚洲美女久久| 91精品国产九九九久久久亚洲| 亚洲精品国产精品国自产在线| 福利一区福利二区微拍刺激| 日韩最新av在线| 国产性色av一区二区| 69av视频在线播放| 国产日韩精品综合网站| 亚洲午夜小视频| 亚洲日本欧美日韩高观看| 亚洲午夜精品久久久久久性色| 97精品视频在线| 日韩av一区二区在线观看| 日韩中文字幕在线视频| 亚洲成人网久久久| 日韩有码在线播放| 日韩在线视频中文字幕| 琪琪亚洲精品午夜在线| 国产精品女主播视频| 亚洲奶大毛多的老太婆| 韩日精品中文字幕| 成人中文字幕在线观看| 久热99视频在线观看|