나는 소켓에서 데이터를 가져 와서 처리하는 파이썬 C- 확장을 가지고있다. 처리 중에 GIL이 해제된다. 현재 필자는 GIL-release로 인해 2 개의 Python 스레드를 사용하여 2 개의 CPU 코어에 90 %의로드를 발생시킵니다.Asyncio from Python C- 확장자
파이썬 3 asyncio에서 어떻게 같은 결과를 얻을 수 있습니까? 올바른 Python-C-API 명령을 찾지 못했습니다. 이벤트 루프가 가서 다른 일을 할 수 있다고 알려줍니다.
다른 방법으로 말하자면, 내 확장 기능이 GIL을 해제하면 이는 자동으로 이벤트 루프에서 사용할 수있는 다음 항목의 실행을 차단하지 않는다는 뜻입니까? 예 : 내 C- 확장자가 첫 번째 소켓의 데이터를 처리하는 동안 다음 소켓을 읽을 수 있습니까? 이것은 어디서나 찾을 수 없습니다. 이 방법을 이해하면 많은 소켓에서 데이터를 가져와 더 많은 CPU 코어를 사용할 수 있습니다.
작성된 것처럼 아주 좋은 질문은 아닙니다. 확장 프로그램이 이벤트 루프와 상호 작용하는 모습을보고 싶다면 스케치해야합니다. 설명했듯이 확장 프로그램이 이벤트 루프와 상호 작용해야하는 것처럼 들리지는 않습니다. –
확장 및 이벤트 루프에 대해 원하는 상호 작용을 설명하는 의사 코드를 설명 할 수 있다면이를 수행하는 방법을 설명하는 것이 가능할 수 있습니다. –
@ SamHartman 그럴 수도 있습니다. 제 질문은 주로 : 내 확장 기능이 GIL을 해제하면 자동으로 이벤트 루프에서 사용할 수있는 다음 항목의 실행을 차단하지 않는다는 의미입니까? 예. 내 C- 확장자가 첫 번째 소켓의 데이터를 처리하는 동안 다음 소켓을 읽을 수 있습니까? 이것은 어디서나 찾을 수 없습니다. – Safihre