2012-06-29 3 views
0

누군가가 도움을 줄 수 바라고 멀티 프로세싱과하는 ctypes는 ...

은 netsnmp 그래서 ... 나는 multiprocessing 기반 파이썬 netsnmp 폴러를 (내가 데이터를 수집 한 후 내가 그래서, 데이터 구조 조작을 많이 할 쓰고 있어요 간접비는 보통 threading에 비해 가치가있다). 나는 완벽한 파이썬 인터페이스 (알맞은 OID 조작, 벌크 워크 등)를 찾을 수 없었다. 그래서 나는 내 자신의 ctypes 바인딩을 올바르게 결정했다. 실제로 snmp_sess_synch_response()을 사용하여 쿼리를 수행합니다.

단일 스레드 (내가 쿼리하고 결과를 얻을 수 있습니다)를 실행할 때 문제가 없습니다. 하지만 상속 된 Process 인스턴스 내에서 (파이썬) netsnmp 클래스를 호출 할 때; snmp_sess_synch_response()이되면 쓰레드가 멈추고 반환 코드가 '2'로 반환되고 snmp_errstring()은 '알 수없는 오류'를 반환합니다.

내가 찾을 수있는 유일한 정보는 http://net-snmp.sourceforge.net/docs/README.thread.html에서 단일 API를 사용해야하며 초기 MIB 빌드는 스레딩 이전이어야한다는 것입니다. 단일 API를 사용하고 있으며 직원을 생성하기 전에 MIB를 작성하고 있습니다.

누구나 디버깅을 어떻게 진행해야하는지 알 수 있습니까? ctypes로 다중 쓰레드를 처리하는 방법은 무엇입니까? 왜 multiprocessing을 사용하면 내 작업 단일 스레드 폴러가 이처럼 멈추는 원인이 될까요?

저는 redhat 6 64 비트 및 Python 2.6.6에서 net-snmp 5.5-41.el6을 사용하고 있습니다.

답변

0

이것은 내 파일 핸들을 닫지 않는 문제로 밝혀졌습니다. 잠시 후 스레드가 모두 다 처리되어 프롬프트가 표시되어 많은 오류가 발생했습니다.