코어 당 하나의 프로세스를 사용하여 작업 당 레코드에서 GNU 병렬을 어떻게 실행할 수 있습니까?

제노 테라 시드

내가 정말로하려는 것은 API 경쟁 조건을 테스트하기 위해 X 개의 작업을 병렬로 실행하는 것입니다.

나는 이것을 생각 해냈다

echo {1..10} | xargs -n1 | parallel -m 'echo "{}"';

어느 인쇄

7 8 9
10
4 5 6
1 2 3

그러나 내가 정말로보고 싶은 것은 ( 참고 순서는 실제로 중요하지 않습니다).

1
2
3
4
5
6
7
8
9
10

그리고 그것들은 한 번에 4 개씩 병렬로 처리 될 것입니다 (또는 내가 가지고있는 CPU / 코어 수에 관계없이, 예를 들어 --jobs 4). 총 10 번의 개별 실행.

나는 이것을 시도했다

echo {1..10} | xargs -n1 | parallel --semaphore --block 3  -m 'echo -n "{} ";

하지만 한 번만 인쇄되는 것 같습니다. 솔루션에 기본 레코드 구분 기호가 개행이라는 생각에 대한 해킹처럼 보이는 xargs가 필요하지 않은 경우 보너스 포인트가 있지만 원하는대로 작동 할 공백을 얻을 수 없었습니다.

10 상당히 작은 숫자이지만 훨씬 더 크다고합시다. 1000

echo {1..1000} | xargs -n1 | parallel -j1000

인쇄물

parallel: Warning: Only enough file handles to run 60 jobs in parallel.
parallel: Warning: Running 'parallel -j0 -N 60 --pipe parallel -j0' or
parallel: Warning: raising 'ulimit -n' or 'nofile' in /etc/security/limits.conf
parallel: Warning: or /proc/sys/fs/file-max may help.

저는 실제로 1000 개의 프로세스를 원하지 않고 한 번에 4 개의 프로세스를 원하며 각 프로세스는 1 개의 레코드를 처리해야하므로 완료 될 때까지 1000 번 실행될 것입니다.

RomanPerekhrest

한 번에 4 개의 프로세스를 원합니다. 각 프로세스는 1 개의 레코드를 처리해야합니다.

parallel -j4 -k --no-notice 'echo "{}"' ::: {1..10}
  • -j4-작업 슬롯의 수. 최대 4 개의 작업을 병렬로 실행

  • -k-출력 순서를 입력 순서와 동일하게 유지합니다. 일반적으로 작업이 완료되는 즉시 작업 출력이 인쇄됩니다.

  • ::: -인수


출력 :

1
2
3
4
5
6
7
8
9
10

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관