Arkaplanda birden fazla iş koymak, tek bir makinenin çoklu çekirdeklerini kullanmanın iyi bir yoludur. parallel
ancak işleri ağınızdaki birden çok sunucuya yaymanıza olanak tanır. Kimden man parallel
:
GNU paralel, işleri bir veya daha fazla bilgisayar kullanarak paralel olarak yürütmek için kullanılan bir kabuk aracıdır . Tipik girdi bir dosya listesi, ana bilgisayar listesi, kullanıcı listesi, URL listesi veya tablo listesidir.
Tek bir bilgisayarda çalışırken bile parallel
, işlerinizin nasıl paralel hale getirileceği konusunda çok daha fazla kontrol sağlar. Bu örneği man
sayfadan alın :
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
Tamam, aynısını yapabilirsin.
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
Ancak, bu daha uzun ve daha zahmetlidir ve daha da önemlisi, .wav
dosyalar kadar çok işi başlatabilir . Bunu birkaç bin dosya üzerinde çalıştırırsanız, dizlerine normal bir dizüstü bilgisayar getirmesi olasıdır. parallel
Öte yandan, CPU çekirdeği başına bir iş başlatacak ve her şeyi güzel ve düzenli tutacak.
Temel olarak, parallel
size işlerinizin nasıl yürüdüğünü ve ne kadar kullanılabilir kaynak kullanmaları gerektiğini ayarlama yeteneği sunar. Bu aracın gücünü gerçekten görmek istiyorsanız, el kitabından veya en azından sunduğu örneklerden yararlanın.
Basit bir arka planlamanın, gerçekten de paralel ile karşılaştırılacak karmaşıklık seviyesine yakın hiçbir yeri yoktur. Ne kadar parallel
farklı olduğuna gelince xargs
, GNU kalabalığı burada güzel bir arıza veriyor . Daha göze çarpan noktalardan bazıları:
- xargs, özel karakterlerle (boşluk, 've "gibi) kötü bir şekilde ilgilenir.
- xargs, belirli sayıda işi paralel olarak çalıştırabilir, ancak cpu-çekirdek sayısı işlerini paralel olarak çalıştırma desteği yoktur.
- xargs çıktının gruplandırılması için bir desteğe sahip değildir, bu nedenle çıktı birlikte çalışabilir, örneğin bir çizginin ilk yarısı bir işlemden ve çizginin son yarısı başka bir işlemden gelir.
- xargs çıktının sırasını koruma konusunda bir desteğe sahip değildir; bu nedenle, xargs kullanarak işleri paralel olarak çalıştırıyorsanız, ikinci işin çıktısı ilk iş tamamlanıncaya kadar ertelenemez.
- xargs, uzak bilgisayarlarda işleri çalıştırmak için herhangi bir desteği yoktur.
- xargs, bağlam değiştirme için herhangi bir desteğe sahip olmadığı için, argümanları oluşturmanız gerekecek.
parallel
Sözdiziminden, ezberlemek için yeni bir klavye-faceroll markasından nefret ediyorum . Ama ben çekirdek / işler arasında otomatik dengeleme buna değer olduğunu tahmin ediyorum ...?