~처럼이것스레딩, 스크립트를 병렬로 실행하는 데 사용하려는 8개의 코어가 있는 원격 컴퓨터가 있습니다(코어당 한 번에 1개의 스크립트).
그러나 여러 개의 bash 스크립트가 없고 Python3 스크립트만 있고 다른 입력으로 실행하고 싶습니다. 나는 그것을 시도했지만 parallel python3 -c main.py input*
아무것도 parallel -j 100% python3 -c main.py ::: input*
작동 하지 않습니다 parallel python3 main.py input*
.
정확한 오류 메시지는 다음과 같습니다.
parallel: Error: -g has been retired. Use --group.
parallel: Error: -B has been retired. Use --bf.
parallel: Error: -T has been retired. Use --tty.
parallel: Error: -U has been retired. Use --er.
parallel: Error: -W has been retired. Use --wd.
parallel: Error: -Y has been retired. Use --shebang.
parallel: Error: -H has been retired. Use --halt.
parallel: Error: --tollef has been retired. Use -u -q --arg-sep -- and --load for -l.
이것이 내 입력과 어떤 관련이 있는지 이해하지 못합니다. 저는 이러한 옵션을 사용하지 않습니다.
저는 Unix를 처음 접했고 경험이 없기 때문에 혼자서나 인터넷 검색을 통해서도 Unix를 작동시킬 수 없습니다. 도움을 주시면 감사하겠습니다. 이 문제를 해결하려면 쉘 스크립트를 작성해야 합니까?
답변1
문제는 실제로 원격 시스템(최신 Ubuntu 실행)에 병렬을 설치하는 방법입니다. 나는 한 사람을 만났다철사내 문제를 해결했습니다. sudo rm /etc/parallel/config
Ubuntu에 설치한 후 실행하여 오류 메시지를 발생시킨 구성을 제거했습니다.
다른 입력을 사용하여 Python 스크립트를 병렬로 실행하는 데 사용하는 명령은 다음과 같습니다.parallel -j 100% python3 main.py ::: inputs*
그래도 도움주신 모든 분들께 감사드립니다!
답변2
각 스크립트를 특정 코어에 할당하여 이를 수행할 수 있습니다. 먼저 를 사용하여 스크립트의 프로세스 ID를 가져와야 taskset
합니다 . 그런 다음 이를 like this 에 전달하면 프로세스가 코어 1에 할당됩니다. 자세한 내용은ps aux | grep <scriptname, input>
pgrep -f <scriptname, input>
taskset
taskset -pc 0 $pid
taskset
http://linuxcommand.org/man_pages/tasksset1.html
답변3
오류 메시지가 어디서 나타나는지 잘 모르겠습니다. 일반적으로 구문은 다음과 같습니다.
parallel -j 100% python3 -c main.py ::: input*
예를 들어 파일이 2개만 있으면 inputa, inputb
병렬로 실행됩니다.
python3 -c main.py inputa
python3 -c main.py inputb
8개의 CPU 코어와 10개의 파일이 있는 경우 input*
이 -j 100%
매개변수를 사용하면 처음에는 8개의 명령만 병렬로 실행됩니다. 하나의 명령이 완료되면 10개의 명령이 모두 완료될 때까지 다음 명령이 실행됩니다. 우리는 일반적인 Linux 스케줄링을 사용하여 각 명령을 별도의 CPU에 할당합니다.