parallel
thực sự không đặt phòng về việc làm cho đầu ra đến theo thứ tự. Nó chỉ xảy ra rằng các công việc thường đủ nhỏ và chia đều trong thời gian cpu để ra theo thứ tự. Bạn nhận thấy nó nhiều hơn khi bạn có rất nhiều công việc đang chạy hoặc thời gian nhiệm vụ của họ khác nhau rất nhiều.
Theo mặc định, parallel
sẽ chỉ chạy cùng số lượng công việc như CPU của bạn có lõi. Trên hầu hết các máy tính xách tay và máy tính để bàn có nghĩa là 2-4, điều đó có nghĩa là nó chỉ chạy một vài công việc tại một thời điểm. Bạn có thể tăng nó với -j.
Dưới đây là một ví dụ để chứng minh thứ tự công việc không xuất ra theo thứ tự nó đã được gửi.
seq 20 | parallel -j 20 'sleep $[RANDOM % 20]; echo '
đầu ra trên hệ thống của tôi là (khả năng của bạn sẽ khác)
7
3
13
20
8
16
2
4
18
17
1
5
9
14
12
6
10
19
11
15
seq 20
là một lệnh sẽ xuất ra số 1-20. Tôi đặt nó song song và sau đó bảo nó chạy 20 công việc đồng thời để đảm bảo tất cả chúng bắt đầu cùng một lúc. 'sleep $[\[RANDOM][1] % 20];
đang sử dụng chế độ ngủ cộng với tham số zsh sẽ trả về một số ngẫu nhiên trong khoảng từ 1 đến 20. Mỗi công việc sẽ ngủ số tiền ngẫu nhiên này và sau đó echo
. Một khi tiếng vang công việc, bạn sẽ ngay lập tức nhận được đầu ra từ song song.
Bạn cũng có thể làm một cái gì đó tương tự parallel --shuf
sẽ xáo trộn trật tự công việc .