@Jinpeng đã đi đúng hướng với GNU Parallel , chỉ là không triển khai.
Ví dụ: Chạy 10 phiên bản song song của chương trình của bạn, với mỗi luồng chỉ chạy chương trình của bạn một lần:
parallel -j10 './myprog argument1 argument2 #' ::: {1..10}
Ví dụ: Chạy 10 luồng song song, với mỗi luồng đó chạy chương trình của bạn vô hạn:
parallel -j10 'while true ; do ./myprog argument1 argument2 ; done #' ::: {1..10}
Bạn có thể dễ dàng mở rộng quy mô này đến hàng trăm luồng bằng cách thay thế 10
trong ví dụ của tôi.
parallel -j200 ... ::: {1..200}
Nếu chương trình của bạn tạo ra bất kỳ thông báo xuất chuẩn nào và bạn muốn xem chúng khi chúng được tạo ra (chứ không phải mặc định đối chiếu chúng), --ungroup
tùy chọn song song có thể hữu ích.
parallel --ungroup ...
Nếu bạn đang chạy rất nhiều luồng từ máy trạm của mình và không muốn mọi thứ trở nên không phản hồi, hãy xem xét nice
việc sử dụng toàn bộ quy trình trong thời gian khởi chạy.
nice -n19 parallel ...
Mặt lưu ý, GNU Parallel thường không được cài đặt theo mặc định nhưng thường là trong các hợp đồng mua gói bình thường của bạn, vì vậy chỉ cần cài đặt nó giống như bất kỳ gói khác: dnf install parallel
, apt-get install parallel
, brew install parallel
vv
myprog
và tổng hợp đầu ra của chúng cho bạn.