현재 메시지 처리 응용 프로그램으로 사용할 파이썬 트위스트 서버를 개발 중입니다. 이상한 문제를 보았습니다.비뚤림 파이썬 가비지 수집
서버에 get_POST를 처리하고 수신 된 메시지를 처리하는 클래스에 전달하기 위해 클래스를 지정합니다.
메시지는 새 메시지가있을 때마다 인스턴스화되는 개체의 구성원 인 사전을 처리합니다. 그러나 예를 들어 메시지에 사전에 대해 10 개의 항목이 포함 된 경우 9 개의 항목 만있는 메시지가 처리 될 때 10 번째 항목은 여전히 사전에 있습니다.
나는 명시 적으로 메시지 예를 들어 처리하기 전에 사전을 취소하여이 문제를 해결 할 수있었습니다: 개체가 밖으로 있었어야 때문에 = {}
는 그러나, 나는 의아해 해요
D를 사전이 추가로 처리 된 후에 수집 된 스코프 및 가비지의 모든 새 메시지에 대해 다시 인스턴스화됩니다. 객체가 인스턴스가 아니고 멤버를 마치 싱글 톤인 것처럼 유지하거나 멤버가 정적 인 것처럼 보이는 것 같습니다.
트위스트 프레임 워크에서 정상적인 범위 지정 정책이 동일하게 작동합니까 아니면 범위를 벗어난 경우 개체가 GC 화되도록 추가 작업을해야합니까?
감사합니다.
-joe.
을 통해 클래스의 초기화없이 심지어 accesible해야이 매우했을 것이다 귀하의 접근 방식을 밝히는 약간의 코드가 포함되어 있다면 쉽게 질문 할 수 있습니다 (특히 실제로 http://sscce.org/ 인 경우). 이 정보를 생략하면 "보이지 않는 프로그램에 어떤 문제가 있는지 추측합니다"라는 질문입니다. : –
Jean-Paul, 우리는 이것을 아래에서 알아낼 수있었습니다. 클래스와 인스턴스 범위 변수에 대한 오해와 트위스트와 관련이 없었습니다. –