GNU Parallel của Poor Man được thực hiện trong ksh?


8

Tôi muốn sử dụng tính năng của song song GNU , nơi nó có thể thực thi lệnh và danh sách được cung cấp song song và nhổ nó ra sau khi hoàn thành, tuy nhiên, tôi không muốn cài đặt song song GNU trên tất cả các máy chủ của chúng tôi.

Hoặc có lẽ là một phiên bản song song của xargs?

Có một triển khai ksh của GNU Parallel không? Trong trường hợp này, nó không phải được thực hiện theo thứ tự như GNU Parallel - miễn là tất cả đầu ra có thể được dẫn hoặc lưu trữ. Tôi cũng muốn tránh sử dụng các tập tin tạm thời.


GNU Parallel là một tập lệnh perl duy nhất. Tôi tò mò tại sao bạn thích cài đặt tập lệnh ksh hơn là cài đặt tập lệnh perl duy nhất được thiết kế để có rất ít phụ thuộc. bạn có thể giải thích về điều đó không? (Tiết lộ: Tôi là tác giả của GNU Parallel)
Ole Tange

Câu trả lời:


6

Nếu bạn muốn song song trên một máy có nhiều lõi, bạn chỉ có thể sử dụng (GNU) xargs, ví dụ:

echo seq_[0-9][0-9].gz | xargs -n 1 -P 16 ./crunching

Ý nghĩa: xargsbắt đầu tối đa 16 quy trình song song với việc ./crunchingsử dụng 1 mã thông báo từ stdin cho mỗi quy trình.

Bạn cũng có thể sử dụng splitkết hợp với xargs.

Hoặc bạn có thể tạo một Makefile đơn giản để thực hiện và gọi công việc make -f mymf -j $CORES(bạn cần các tệp tạm thời cho giải pháp này).

PS: Hướng dẫn song song GNU cũng bao gồm một số so sánh với các công cụ khác, bao gồm xargsmake , thật thú vị khi chúng viết:

(Các phiên bản đầu tiên của song song GNU được triển khai ngẫu nhiên bằng cách sử dụng make -j).


Điều quan trọng đối với người hỏi là "tất cả đầu ra có thể được dẫn hoặc lưu trữ". xargsnổi tiếng là xấu khi chạy song song vì đầu ra có thể trộn lẫn.
Ole Tange

@maxschlepzig: Tôi đồng ý với câu trả lời của bạn 100%, tôi luôn chỉ sử dụng xargs. Nhiều người không biết GNU xargs có thể thực hiện song song!
JM Becker

0

Nhìn vào parallel --embedđó nhúng GNU Parallel vào cùng một tập lệnh shell mà bạn sử dụng nó từ đó.

parallel --embed > new_script

sau đó chỉnh sửa new_script.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.