다양한 매개변수 조합으로 실행하려는 Python 스크립트가 있다고 가정해 보겠습니다(저는 MacBook Pro를 사용하고 있습니다). 예를 들어 쉘 스크립트를 사용하여 이 작업을 수행하는 경우 run.sh
동시에 여러 번(매번 다른 매개변수 조합을 사용하여) 실행하는 것이 합리적입니까? run.sh
즉, 메모리에서 실행될 때 서로 다른 매개변수 조합이 서로 접촉합니까? 이것은 메모리 보호의 개념과 약간 비슷합니까?
답변1
Python 스크립트가 수행하는 작업에 따라 많은 것이 달라집니다 run.sh
.
아주 간단한 예를 들어보겠습니다.
#!/bin/bash
s=$(( RANDOM%5 ))
echo Sleeping for $s > /tmp/foo
sleep $s
echo You entered $1 >> /tmp/foo
cat /tmp/foo
이제 내가 그렇게 하면
./run.sh 1 &
./run.sh 2 &
./run.sh 3 &
어떤 결과가 나올지 모르겠습니다. 이는 스크립트에 /tmp/foo
여러 번 액세스할 수 없는 하나의 리소스( )만 있기 때문입니다. 한 스크립트가 다른 스크립트의 결과를 덮어쓰게 됩니다.
반대로, 정확하고 고유한 "임시" 리소스를 사용하도록 스크립트를 작성한 경우 여러 번 호출할 수 있습니다.
#!/bin/bash
tmpfile=$(mktemp)
s=$(( RANDOM%5 ))
echo Sleeping for $s > $tmpfile
sleep $s
echo You entered $1 >> $tmpfile
cat $tmpfile
rm $tmpfile
이제 원하는 만큼 여러 번 호출할 수 있으며 작동합니다.
음...물론 메모리와 CPU 제한도 고려합니다!