다른 방법으로, 파이썬의 C 확장 API(아이템 96 “성능과 편의성을 최대화하기 위해 확장 모듈을 고려하라” 참조)를 사용해 더 파이썬다운 인터페이스를 제공하면서 네이티브 성능을 확보할 수도 있다. 그러나 ctypes에는 C 확장 모듈보다 더 나은 점이 몇 가지 있다.
• ctypes를 사용하면 포인터 값을 보유하는 객체의 참조 카운트가 0이 될 때 자동으로 메모리가 해제된다. 반면 C 확장 모듈에서는 C 포인터에 대한 수동 메모리 관리와 파이썬 객체에 대한 수동 참조 카운팅을 직접 수행해야 한다.
• ctypes를 사용해 함수를 호출하면 실행 중에 GIL이 자동으로 해제되기 때문에 다른 파이썬 스레드가 병렬로 실행될 수 있다(아이템 68 “스레드를 블러킹 I/O에 사용하고 병렬성에는 사용하지 말라” 참조). C 확장 모듈에서는 GIL을 명시적으로 관리해야 하며, GIL을 보유하지 않을 때는 기능이 제한된다.
• 디스크에 있는 공유 객체나 동적 라이브러리의 경로를 ctypes에게 제공하면 ctypes가 공유 객체나 동적 라이브러리를 자동으로 읽어온다. 시스템이 이미 존재하는 기존 빌드 시스템을 사용해 이런 네이티브 라이브러리를 컴파일할 수 있다. 반면 파이썬 C 확장에서는 파이썬의 빌드 시스템을 활용해 올바른 경로를 포함시키고 링커 플래그를 설정하는 등의 상당히 복잡한 작업을 여러 번 반복해야 할 수 있다.