การวางหลายงานในพื้นหลังเป็นวิธีที่ดีในการใช้หลายคอร์ของเครื่องเดียว parallel
อย่างไรก็ตามอนุญาตให้คุณกระจายงานผ่านเซิร์ฟเวอร์หลายเครื่องในเครือข่ายของคุณ จากman parallel
:
GNU Parallel เป็นเครื่องมือเชลล์สำหรับการเรียกใช้งานแบบขนานโดยใช้คอมพิวเตอร์ตั้งแต่หนึ่ง เครื่องขึ้นไป อินพุตทั่วไปคือรายการไฟล์รายการโฮสต์รายการผู้ใช้รายการ URL หรือรายการตาราง
แม้ขณะทำงานบนคอมพิวเตอร์เครื่องเดียวก็parallel
ช่วยให้คุณสามารถควบคุมวิธีการทำงานแบบขนานได้มากขึ้น นำตัวอย่างนี้จากman
หน้า:
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
ตกลงคุณสามารถทำเช่นเดียวกันกับ
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
อย่างไรก็ตามนั่นจะนานและยุ่งยากมากขึ้นและที่สำคัญกว่านั้นจะเปิดใช้งานมากเท่าที่มี.wav
ไฟล์ หากคุณรันไฟล์นี้สองสามพันไฟล์มีแนวโน้มที่จะนำแล็ปท็อปทั่วไปมาที่หัวเข่าของมัน parallel
ในทางตรงกันข้ามจะเปิดตัวหนึ่งงานต่อซีพียูคอร์และทำให้ทุกอย่างดีและเป็นระเบียบ
โดยทั่วไปparallel
จะให้ความสามารถในการปรับแต่งการทำงานของคุณและทรัพยากรที่มีอยู่ที่ควรใช้ หากคุณต้องการเห็นพลังของเครื่องมือนี้จริงๆให้อ่านคู่มือหรืออย่างน้อยตัวอย่างที่มีให้
พื้นหลังที่เรียบง่ายจริงๆไม่มีที่ใดที่ใกล้เคียงกับระดับความซับซ้อนที่จะเปรียบเทียบกับแบบขนาน สำหรับวิธีการparallel
ที่แตกต่างจากxargs
ที่ GNU ฝูงชนให้รายละเอียดที่ดีที่นี่ บางจุดที่เด่นชัดมากขึ้นคือ:
- xargs จัดการกับอักขระพิเศษไม่ดี (เช่น space, 'และ ")
- xargs สามารถรันจำนวนงานที่กำหนดในแบบขนาน แต่ไม่มีการสนับสนุนสำหรับการรันงาน number-of-cpu-cores แบบขนาน
- xargs ไม่สนับสนุนการจัดกลุ่มเอาต์พุตดังนั้นเอาต์พุตอาจทำงานร่วมกันเช่นครึ่งแรกของบรรทัดมาจากกระบวนการหนึ่งและครึ่งสุดท้ายของบรรทัดมาจากกระบวนการอื่น
- xargs ไม่สนับสนุนการรักษาลำดับของผลลัพธ์ดังนั้นหากการรันงานแบบขนานโดยใช้ xargs ผลลัพธ์ของงานที่สองไม่สามารถเลื่อนออกไปจนกว่างานแรกจะเสร็จสิ้น
- xargs ไม่รองรับการเรียกใช้งานบนคอมพิวเตอร์ระยะไกล
- xargs ไม่รองรับการแทนที่บริบทดังนั้นคุณจะต้องสร้างอาร์กิวเมนต์
parallel
ไวยากรณ์ แต่แบรนด์ใหม่ของ faceroll แป้นพิมพ์ที่จะจดจำ แต่ฉันเดาว่าการทำให้สมดุลอัตโนมัติระหว่างคอร์ / งานนั้นคุ้มค่า ...