고객이 이미지를 업로드 한 후 이미지를 8 가지 크기로 다시 크기를 정한 다음 S3까지 보내고 파일 시스템에 저장하려고합니다. 분명히이 작업은 오랜 시간 (초) 걸릴 수 있으며 "다중 스레드"방식으로 수행하고 싶습니다 (실제로 다중 스레드인지 또는 다른 기능인지 여부를 신경 쓰지 않기 때문에 인용합니다). 제 이해는 파이썬의 GIL 덕분에 같은 프로세스를 사용하므로 코드의 정상적인 플로우 (대 멀티 스레딩)에서 수행 한 것과 똑같이 작동하기 때문에 이런 식으로 멀티 스레딩을 성공적으로 사용할 수 없다는 것입니다. 이런 종류의 작업을 위해 파이썬에서 새로운 프로세스를 여는 다른 방법이 있습니까?Django/Python : 파이썬에서 어떻게 새로운 프로세스를 시작하나요?
답변
외부 프로세스를 호출하려면 subprocess
모듈을 사용하십시오.
한편, GIL을 사이드 스텝 처리하고 파이썬 태스크를 회전 시키려면 multiprocessing
모듈을 사용하십시오. threading
패키지와 매우 흡사 한 인터페이스를 제공하지만 서브 프로세스를 사용하므로 GIL의 제약 조건에 구속받지 않습니다.
하위 프로세스 (즉, 외부 프로세스는 무엇입니까?)를 사용하는 이유는 무엇입니까? – orokusaki
@orokusaki : 일부 외부 유틸리티 인 EG를 사용하여 파일을 처리하고 싶은데 비디오를 처리하고 ffmpeg에서 코드 변환을 원한다고 가정하면이 경우 서브 프로세스 모듈을 사용하여 ffmpeg를 실행하고 입력 내용을 파이프 처리합니다 데이터를 처리하고 처리 된 데이터를 가져 오기 위해 출력을 읽습니다. 그러나 GIL의 영향을받지 않고 장기간 실행되는 Python 루틴을 실행하는 것이 원하는 경우 다중 처리 패키지가 원하는 것입니다. – jkp
- 1. 텍스트 꼬리표는 어떻게 시작하나요?
- 2. Android에서 활동을 어떻게 시작하나요?
- 3. SurfaceView를 확장하는 클래스를 만드는 방법은 어떻게 시작하나요?
- 4. 새로운 nodejs 프로세스를 시작하는 방법
- 5. 오이에서 다른 레일 인스턴스를 어떻게 시작하나요?
- 6. 현재 프로세스를 어떻게 sudo합니까?
- 7. 새로운 프로세스를 생성하는 단위 테스트 코드는 어떻게 작성합니까?
- 8. 새로운 중심 측정 값은 어떻게 구성합니까?
- 9. 파이썬에서 프로세스를 호출하는 가장 빠른 방법은 무엇입니까?
- 10. 파이썬에서 프로세스를 종료하는 교차 플랫폼 방식
- 11. 이름이나 파이썬에서 태그로 프로세스를 호출하는 방법
- 12. 어떻게 파이썬에서 새로운 표준 시간대를 계산할 수 있습니까?
- 13. 파이썬에서 __threshold__을 어떻게 사용합니까?
- 14. 유닉스에서 다른 프로그램으로 새로운 프로세스를 시작하는 방법?
- 15. vb.net : 왜 이것이 0에서 시작하나요?
- 16. 이전 작업이 완료된 후 어떻게 AJAX 요청을 시작하나요?
- 17. 새로운 스레드를 통해 파이썬에서 wx.Frame 열기
- 18. 변수가 파이썬에서 새로운 스타일의 클래스인지 확인 하시겠습니까?
- 19. 파이썬에서 map.pool을 어떻게 사용합니까?
- 20. 다형성은 어떻게 파이썬에서 작동합니까?
- 21. 파이썬에서 어떻게 monkeypatching합니까?
- 22. 파이썬에서 파일을 어떻게 연결합니까?
- 23. 어떻게 파이썬에서 온톨로지를 만드시겠습니까?
- 24. 파이썬에서 웹캠에 어떻게 액세스합니까?
- 25. 파이썬에서 어떻게 그룹을 보완합니까?
- 26. 어떻게 파이썬에서 배열로 os.path.join을합니까?
- 27. 어떻게 파이썬에서 쓰레딩을합니까?
- 28. 어떻게 파이썬에서 쓰레딩을합니까?
- 29. 어떻게 Devise 등록 프로세스를 테스트합니까?
- 30. 파이썬에서 서브 프로세스를 사용할 때 FileIO의 순서가 잘못되었습니다.
모두 중복 : http://stackoverflow.com/search?q=%5Bpython%5D+subprocess+django. 특히 this : http://stackoverflow.com/questions/1619397/how-to-start-a-long-running-process-from-django-view –
이러한 게시물은 도움이되지 않습니다. 대부분의 대답은 하위 프로세스를 사용하여 언급합니다. 하위 프로세스는 하위 프로세스로 해결할 수있는 대규모 IO 문제가있는 경우를 제외하고 코드를 복잡하게하는 것 외에는 아무에게도 유용하지 않습니다. Google "Python GIL의 문제점" – orokusaki
"아무에게도 아무 것도 유용하지 않는 하위 프로세스". 그러나 당신은 "서브 프로세스"로 답변을 수락했습니다. 나는 대답을 받아 들일 수있는 대답과 섞이지 않았다. –