본문 바로가기
무모한 도전-주식 인공지능 만들기

메모리 누수를 잡기 위한 여정 part8

by 인터넷떠돌이 2019. 6. 25.
반응형

안녕하세요?

 

지난번 포스팅에서 어떻게 해서 이 작업을 jemalloc이라는 툴을 가지고 오려고 가지가지 시도를 하기는 했습니다만, 문제가 생기는 것이, 이게 만만하게 되는 작업이 아니기는 아니었습니다. 그래서 차선책으로 구 시대의 버젼이라고는 하지만 역시 메모리를 잡아주는 툴인 nedmalloc을 사용해 보도록 했습니다.

 

먼저 홈페이지에서 다운로드 받은 nedmalloc에서 nedmalloc.c, nedmalloc.h, malloc.c.h 라는 파일 3개를 제 프로젝트의 폴더로 가지고 오도록 합니다.

 

그리고 나서 이것만으로 끝난게 아니라 공유 라이브러리를 만들어야 한다고 하는데 처음에는 그 방법을 몰라서 계속해서 헤메었습니다.

 

결국 gcc -c -fPIC [.c 파일이름] -o [내가 지정하는 이름.o] 라는 형식으로 해서, .o파일을 만들어 주도록 합니다. 이렇게 함으로써 1단계는 완성이 되었습니다.

 

이렇게 해서 .o 파일이 생성이 된 것을 확인할 수 있기는 있었습니다. 이제 다음으로는 공유 라이브러리라는 .so파일을 만들러 가 봐야 합니다.

 

 

다음으로는 gcc [내가 지정한 파일이름.o] -shared -o [내가 지정하는 이름].so 라는 것을 타이핑 해 주는 것으로 so파일을 생성해 줍니다.

 

이제 so 파일이 생성이 되는 것을 확인할 수 있었습니다. 이 so 파일을 제 프로젝트의 폴더로 옮겨 주도록 해야 하는 작업이 남아 있습니다.

 

문자 그대로 복사해서 옮겨주기를 해야 합니다. 위 방식대로 c언어로 작성이 된 라이브러리를 파이썬으로 가지고 올 수 있다고 합니다.

 

이제 오랫만에 파이참으로 가서, 위 스크린샷처럼 import 항목에 ctypes를 임포트 하도록 하고, CDLL으로 공유 라이브러리인 파일명을 지정해 주도록 합니다.

 

그리고 나서 본격적으로 멀티 프로세스가 시작하기 전에, 위 스크린샷처럼 nedpmalloc()이라는 메서드를 가지고 와서 실행시켜 주도록 합니다.

 

그런데 어떻게 된 셈인지는 몰라도, 위 스크린샷처럼 알 수 없는 에러-아마도 가지고 왔는 C 언어로 적혀있는 라이브러리 때문인듯 한데, 무언가 잘못 지정한 듯 합니다.

 

그래서 한번 제대로 될지 아닐지는 모르겠지만, 일단 nedmalloc()이라고만 입력을 해서, 한번 더 시험가동에 들어가 보고자 했습니다.

 

이렇게 하는 것으로 이제 작동을 하는 것을 확인할 수 있었습니다. 이렇게 까지 오는데 걸린 시간이 밤을 새어서 거의 아침 9시를 넘긴 시점이 되었기 때문에, 일단 여기서는 어거지라도 적용이 된 것에 만족을 하도록 하고, 다음으로는 모의투자에 들어가 보고자 합니다.

반응형