@ Jinpeng มาถูกทางด้วยGNU Parallelไม่ใช่แค่การนำไปใช้
ตัวอย่าง: รัน 10 อินสแตนซ์ขนานของโปรแกรมของคุณโดยที่แต่ละเธรดรันโปรแกรมของคุณเพียงครั้งเดียว:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
ตัวอย่าง: รัน 10 เธรดแบบขนานโดยที่แต่ละเธรดที่รันโปรแกรมของคุณจะไม่มีที่สิ้นสุด:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
คุณสามารถปรับขนาดนี้เป็นหลายร้อยเธรดโดยการแทนที่10
ในตัวอย่างของฉัน
parallel -j200 ... ::: {1..200}
หากโปรแกรมของคุณสร้างข้อความ stdout ใด ๆ และคุณต้องการที่จะเห็นพวกเขาในขณะที่พวกเขาถูกสร้างขึ้น (แทนที่จะเริ่มต้นที่จะ collates พวกเขา) --ungroup
ตัวเลือกในการขนานอาจมีประโยชน์
parallel --ungroup ...
หากคุณใช้งานเธรดจำนวนมากจากเวิร์กสเตชันของคุณและไม่ต้องการให้สิ่งใดไม่ตอบสนองให้พิจารณาnice
ทรีย่อยกระบวนการทั้งหมดในเวลาเปิดตัว
nice -n19 parallel ...
สังเกตด้าน GNU ขนานมักจะไม่ได้ติดตั้งโดยค่าเริ่มต้น แต่มักจะอยู่ในแพคเกจ Repos ปกติของคุณดังนั้นเพียงแค่ติดตั้งเช่นแพคเกจอื่น ๆ : dnf install parallel
, apt-get install parallel
, brew install parallel
ฯลฯ
myprog
อินสแตนซ์ของเด็กและรวบรวมเอาท์พุทของพวกเขาสำหรับคุณ