Đặt nhiều công việc trong nền là một cách tốt để sử dụng nhiều lõi của một máy. parallel
tuy nhiên, cho phép bạn truyền bá công việc trên nhiều máy chủ của mạng. Từ man parallel
:
GNU song song là một công cụ shell để thực hiện các công việc song song bằng cách sử dụng một hoặc nhiều máy tính . Đầu vào điển hình là danh sách các tệp, danh sách máy chủ lưu trữ , danh sách người dùng, danh sách URL hoặc danh sách bảng.
Ngay cả khi chạy trên một máy tính, nó parallel
mang lại cho bạn quyền kiểm soát lớn hơn nhiều so với cách các công việc của bạn được song song hóa. Lấy ví dụ này từ man
trang:
To convert *.wav to *.mp3 using LAME running one process per CPU core
run:
parallel lame {} -o {.}.mp3 ::: *.wav
OK, bạn có thể làm tương tự với
for i in *wav; do lame "$i" -o "${i%.wav}.mp3" & done
Tuy nhiên, điều đó dài hơn và cồng kềnh hơn và quan trọng hơn là sẽ khởi chạy nhiều công việc như có .wav
tệp. Nếu bạn chạy nó trên một vài nghìn tệp, nó có khả năng mang một máy tính xách tay bình thường đến đầu gối của nó. parallel
mặt khác, sẽ khởi chạy một công việc trên mỗi lõi CPU và giữ mọi thứ tốt đẹp và gọn gàng.
Về cơ bản, parallel
cung cấp cho bạn khả năng tinh chỉnh cách thức công việc của bạn được chạy và bao nhiêu tài nguyên có sẵn mà họ nên sử dụng. Nếu bạn thực sự muốn thấy sức mạnh của công cụ này, hãy xem qua hướng dẫn của nó hoặc, ít nhất, các ví dụ mà nó cung cấp.
Nền đơn giản thực sự không có nơi nào gần mức độ tinh tế để so sánh với song song. Đối với sự parallel
khác biệt như thế nào xargs
, đám đông GNU đưa ra một sự cố tốt đẹp ở đây . Một số điểm nổi bật hơn là:
- xargs xử lý không tốt các ký tự đặc biệt (như dấu cách, 'và ").
- xargs có thể chạy song song một số lượng công việc nhất định, nhưng không hỗ trợ để chạy song song các công việc số lõi.
- xargs không hỗ trợ để nhóm đầu ra, do đó đầu ra có thể chạy cùng nhau, ví dụ nửa đầu của một dòng là từ một quy trình và nửa cuối của dòng là từ một quy trình khác.
- xargs không hỗ trợ cho việc giữ thứ tự đầu ra, do đó, nếu chạy các công việc song song bằng cách sử dụng xargs, đầu ra của công việc thứ hai không thể bị hoãn cho đến khi công việc đầu tiên được thực hiện.
- xargs không hỗ trợ để chạy các công việc trên máy tính từ xa.
- xargs không hỗ trợ thay thế ngữ cảnh, vì vậy bạn sẽ phải tạo các đối số.
parallel
cú pháp, nhưng một thương hiệu mới khác của bàn phím-faceroll để ghi nhớ. Nhưng tôi đoán việc tự động cân bằng giữa các lõi / công việc có đáng không ...?