많은 Python 사용자와 반대되는 문제가 있습니다. 프로그램에서 CPU 사용량이 너무 적습니다. 나는 already got help을 멀티 프로세싱으로 전환하여 내 작업 컴퓨터 코어 4 개 모두를 활용했으며 결과적으로 실제 성능 향상을 보았습니다. 그러나 그 개선은 다소 신뢰할 만하다. 내 프로그램의 CPU 사용량은 6 개의 프로세스가 실행중인 경우에도 계속해서 저하되는 것으로 보입니다. 일부 디버그 메시지를 추가 한 후에는 내가 생성 한 일부 프로세스 (완료까지 실행해야하는 프로세스)가 조기에 죽어 가고 있기 때문에 이것이 발견되었습니다. 프로세스가 실행되는 방법의 본체는 동안 진정한 루프, 그리고 유일한 방법은 밖으로이 블록 :Python - 비어 있지 않은 다중 처리에서 Queue.Empty 예외가 발생했습니다 .Queue
try:
f = filequeue.get(False)
except Empty:
print "Done"
return
filequeue가 서브 프로세스의 생성 전에 채워집니다, 그래서 확실히 실제로 비어 있지 않습니다. 실제로 일단 비어있는 모든 프로세스는 대략 같은 시간에 종료해야합니다. Queue.get 호출에 0이 아닌 시간 초과 (0.05) 매개 변수를 추가하려고 시도했지만 문제가 해결되지 않았습니다. 비어 있지 않은 Queue에서 Queue.empty 예외가 발생하는 이유는 무엇입니까?
이것은'다중 처리 .Queue' 또는'Queue.Queue'입니까? – NPE
'filequeue.get (False)'대신'filequeue.get (True)'를하면 어떻게 될까요? – NPE
다중 처리입니다. 이후 다중 처리를 사용하고 있습니다. filequeue.get (True)를 수행했다면 물론 Queue.Empty 예외는 발생하지 않지만 파일 대기열이 고갈되면 모든 processess는 영원히 차단되므로 주 프로세스가 생성 된 프로세스를 결합하려고 할 때 모든 작업이 중지됩니다. – dpitch40