나는 100 개의 작업을 실행할 수 있습니다. 병렬로 실행할 수는 있지만 각각의 작업은 많은 메모리를 차지합니다. 그래서 저는 동시에 8 명만 출마 할 수 있습니다.총 N 개의 작업을 실행합니다. 언제든지 M 개가 병렬로 실행됩니다.
나는 현재이 쉘 스크립트가 있습니다
(
(python run.py $arg1 &)
(python run.py $arg2 &)
(python run.py $arg3 &)
(python run.py $arg4 &)
(python run.py $arg5 &)
(python run.py $arg6 &)
(python run.py $arg7 &)
(python run.py $arg8 &)
) 2>&1 | cat -u
(
(python run.py $arg9 &)
(python run.py $arg10 &)
(python run.py $arg11 &)
(python run.py $arg12 &)
(python run.py $arg13 &)
(python run.py $arg14 &)
(python run.py $arg15 &)
(python run.py $arg16 &)
) 2>&1 | cat -u
...
이 여덟의 첫 번째 배치를 실행하는 효과를 가지고 있으며, 그들은 모두 완료되면, 그것은 문제가 있다는 것입니다 (8)의 다음 배치를 시작을 실행 시간은 각 작업에 대해 일정하지 않으며 일부는 다른 것보다 먼저 완료되기 때문에 완료 될 8의 각 배치에 대해 가중치를 적용하는 것이 좋지 않습니다. 8 중에서 가장 느린 작업을 효과적으로 기다리고 있습니다.
대신 모든 100 개의 작업을 실행하는 스크립트 (셸 또는 파이썬)를 갖고 싶습니다. 최적의 효율성을 위해 주어진 시간에 8 개를 병렬로 실행합니다.
달성에 대한 아이디어가 있습니까?
'cat -u'는 어떻게해야하나요? [맨 페이지] (http://unixhelp.ed.ac.uk/CGI/man-cgi?cat)에 따르면 -u는 무시됩니다. –
@ NickODell TBH이 스크립트를 어딘가에서 복사 했으므로 확실하지 않습니다. 내 남자는 뭔가 다른 것을 보았습니다. "-u 출력 버퍼링을 비활성화합니다." – Greystache