답변:
GNU Parallel이 있다면 다음을 실행할 수 있습니다.
cat <someinput> | parallel --bar -P 5 <somecmd>
GNU Parallel은 일반적인 병렬 처리기이므로 동일한 컴퓨터 또는 ssh 액세스 권한이있는 여러 컴퓨터에서 작업을 병렬로 쉽게 실행할 수 있습니다.
4 개의 CPU에서 32 개의 서로 다른 작업을 실행하려는 경우 병렬화하는 간단한 방법은 각 CPU에서 8 개의 작업을 실행하는 것입니다.
대신 GNU Parallel은 프로세스가 완료되면 새로운 프로세스를 생성하여 CPU를 활성화하여 시간을 절약합니다.
설치
개인 설치에는 루트 액세스가 필요하지 않습니다. 다음을 수행하여 10 초 안에 완료 할 수 있습니다.
(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash
다른 설치 옵션은 http://git.savannah.gnu.org/cgit/parallel.git/tree/README를 참조하십시오.
더 알아보기
더 많은 예를보십시오 : http://www.gnu.org/software/parallel/man.html
소개 동영상 시청 : https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1
튜토리얼을 따라 진행 하십시오 : http://www.gnu.org/software/parallel/parallel_tutorial.html
지원을 받으려면 이메일 목록에 가입 하십시오 : https://lists.gnu.org/mailman/listinfo/parallel
pv를 사용할 수 있습니다 :
cat <someinput> | pv -p -s sizeof_someimput | xargs -n 1 -P 5 <somecmd>
이것으로의 읽기 위치를 알 수 someimput는 , 그래서 치료 위치를 대략 알 수 someimput가 있다.
FIND=( find "$DIR" -type f ) && ${FIND[@]} -print0 | pv -0lps $(${FIND[@]} | wc -l) | xargs -0 -I {} -P 5 <somecmd>