Python 스크립트를 200,000번 실행해야 합니다. bash를 사용하여 병렬로 실행할 수 있습니까? 20만번이니까 최소 10개 쓰레드를 동시에 사용하고 싶은데
답변1
this.py
다음을 가정합니다 .
#!/usr/bin/python
from datetime import datetime
now = datetime.now()
print now
Bash에서 다음 코드는 this.py
20,000 라운드 동안 10개의 프로세스를 동시에 실행합니다. 10개의 프로세스가 완료되면 다음 라운드가 시작됩니다. 이렇게 하면 this.py
한 번에 10개의 스레드만 사용하면서 200,000번 실행할 수 있습니다 .
#!/bin/bash
for i in {1..20000}; do
echo -e "\nROUND $i\n"
for j in {1..10}; do
/path/to/this.py &
done
wait
done 2>/dev/null
...또는 한 줄을 사용합니다.
for i in {1..20000}; do echo -e "\nROUND $i\n"; for j in {1..10}; do /path/to/this.py & done; wait; done 2>/dev/null
분명히 해당 라인을 제외할 수 있습니다 echo
. 나는 테스트 목적으로 이 작업을 수행하고 있으며 STDERR로 리디렉션합니다 /dev/null
.
ROUND 1
2015-10-09 23:20:12.432295
2015-10-09 23:20:12.444988`
2015-10-09 23:20:12.471788
2015-10-09 23:20:12.482884
2015-10-09 23:20:12.519446
2015-10-09 23:20:12.558949
2015-10-09 23:20:12.560826
2015-10-09 23:20:12.582571
2015-10-09 23:20:12.600680
2015-10-09 23:20:12.625727
ROUND 2
2015-10-09 23:20:12.761279
2015-10-09 23:20:12.764459
2015-10-09 23:20:12.801361
2015-10-09 23:20:12.831900
2015-10-09 23:20:12.853339
2015-10-09 23:20:12.877965
2015-10-09 23:20:12.921946
2015-10-09 23:20:12.950549
2015-10-09 23:20:12.973625
2015-10-09 23:20:12.986714
ROUND 3
2015-10-09 23:20:13.128276
2015-10-09 23:20:13.169144
2015-10-09 23:20:13.222183
2015-10-09 23:20:13.234889
2015-10-09 23:20:13.242653
2015-10-09 23:20:13.246504
2015-10-09 23:20:13.305419
2015-10-09 23:20:13.306198
2015-10-09 23:20:13.317769
2015-10-09 23:20:13.328895
...등.
또한 보기GNU 병렬, 아마도 보유한 코어 수만큼 동시 작업을 실행하는 것으로 제한될 것이라고 생각합니다. parallel
여러 프로세스를 실행하면 이 경고를 방지 할 수 있습니다 . 루프 등에 대한 훌륭한 대안입니다.