무한 루프가있는 메서드를 실행하여 비디오 디스플레이를 만들려고합니다. 이 메서드는 하드웨어 입력을 처리하는 다른 루프 내에서 호출되므로 비디오를 최대한 빨리 루프 할 수 없으므로 외부 루프를 사용하여 비디오를 실행하면 지연이 발생합니다. 비디오 루프를 시작한 다음 하드웨어 루프를 시작하고 별도로 실행하는 방법이 있습니까? 현재 비디오 루프를 호출하면 반환 될 때까지 루프에 그냥 앉아 있습니다.한 번에 여러 메서드 실행 파이썬에서
답변
예, 파이썬 자신의 threading 모듈 또는 gevent과 같은 협동 마이크로 스레딩 모듈을 사용할 수 있습니다. 파이썬의 스레딩 메커니즘이 CPython의이 면책 조항 (대부분의 상자에서 기본 파이썬 구현) 수행
참고 :
인해 글로벌 통역 잠금으로는, CPython과에 하나의 스레드 만도 (한 번에 파이썬 코드를 실행할 수 있습니다 특정 성능 위주의 라이브러리는 이러한 제한을 극복 할 수 있습니다). 응용 프로그램에서 멀티 코어 시스템의 전산 자원을보다 효율적으로 사용하려면
multiprocessing
을 사용하는 것이 좋습니다. 그러나 다중 I/O 바인딩 작업을 동시에 실행하려면 스레딩이 여전히 적합한 모델입니다.
호출하는 기본 모듈의 작동 방식에 따라 threading
을 사용하는 동안 한 스레드가 제어를 자주 포기하지 않을 수도 있습니다. 이 경우 협동 마이크로 스레딩을 사용하는 것이 유일한 옵션 일 수 있습니다.
예, 파이썬 자신의 multiprocessing 모듈을 사용할 수 있습니다.
다중 처리는 GIL과 싸울 필요가 없으며 사용자가 제공하는 모든 작업을 동시에 수행 할 수 있습니다.
반면에 다중 프로세스 모듈에 경고가 있습니다. 프로세스를 생성 할 때 완전히 별도의 파이썬 인터프리터입니다. 그래서 OS가 제어하는 스레드가 아닙니다. 그것은 그 자체로 완전히 다른 과정입니다. 이것은 프로그램에 오버 헤드를 추가 할 수 있지만 GIL을 완전히 피하는 이점은이 점을 경미한 문제로 만듭니다.
그래,이 방법도 효과가 있습니다. 그러나 사용해야하는 통신 메커니즘은 크로스 스레드가 아닌 교차 프로세스가되므로 각 프로세스가 자체 힙을 갖기 때문에 개체 공유만큼 간단하지는 않습니다. – cdhowie
- 1. 한 번에 여러 개의 shell_exec을 실행 하시겠습니까?
- 2. 한 번에 여러 부분 문자열 바꾸기
- 3. 한 번에 여러 UIPopoverController 표시
- 4. 여러 파일을 한 번에 업로드
- 5. 하나의 bat 파일을 사용하여 한 번에 여러 파일 실행
- 6. 여러 사운드를 Qt에서 한 번에 재생
- 7. 실행 균형을 한 번에 업데이트하는 방법은 무엇입니까?
- 8. MAC에서 한 번에 두 개의 실행 파일
- 9. C - 시스템 (""); 한 번에 하나씩 실행
- 10. 여러 번에 한 번에 할당되지 않은 지역 변수가 있습니까?
- 11. 한 번에 두 번 버튼으로 한 번에
- 12. 한 번에 여러 테이블에서 여러 레코드를 선택하는 방법
- 13. C#, 한 번에 여러 레코드를 데이터베이스에 삽입하십시오.
- 14. PHP MySQL - 한 번에 여러 행을 업데이트하십시오.
- 15. IE에서 한 번에 여러 파일을 다운로드하는 방법
- 16. VSS에서 한 번에 여러 파일 고정 방법
- 17. 한 번에 여러 웹 페이지에 액세스하려면 #
- 18. 장고 패키지 한 번에 여러 파일 패키지
- 19. jQuery 한 번에 여러 div에 효과 추가
- 20. mysql에서 한 번에 여러 테이블 끌어 놓기
- 21. 한 번에 여러 클래스에 스타일을 적용하려면 어떻게해야합니까?
- 22. 여러 버튼에 동일한 동작을 한 번에 할당
- 23. Maven 한 번에 여러 프로필 작성
- 24. 여러 개의 레코드를 한 번에 편집하는 레일
- 25. 한 번에 여러 문자열 값 인식
- 26. Android, 한 번에 여러 변수를 정의하는 방법
- 27. 한 번에 여러 캔버스를 그릴 수 있습니까?
- 28. 터치로 여러 이미지를 한 번에 이동하는 방법
- 29. Perl에서 한 번에 여러 파일 구문 분석
- 30. Eclipse : 여러 작업 세트를 한 번에 정의
죄송합니다. 첫 번째 줄을 벗겨 내야했습니다. D –