반응형


Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 해결법

 

Scikit-learn을 사용하다보면 exit code 139를 만나게 되는 경우가 있다.

 

물론 139 에러코드는 다양한 상황에 나타날 수 있기 때문에 이 방법으로 무조건 해결되지는 않을 수 있다.

다만 대부분의 상황에서는 이 방법으로 해결이 될 수 있을 것 같다.

 

원인


  • Scikit-learn 내부에서 openblas를 사용한다.
  • openblas가 여러 개의 쓰레드를 사용하는데, 여러 라이브러리와의 충돌 원인이 된다.
  • numpy의 경우 완전히 이상한 값을 연산 결과로 내놓기도 한다.

 

해결 방법


import os
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["OMP_NUM_THREADS"] = "1"

 

위 코드를 python 파일 최상단에 넣으면 해결된다.

본 코드를 통해 openblas가 사용하는 Thread의 수를 제한함으로써 다른 라이브러리와의 충돌을 막을 수 있다.

 

 

반응형
블로그 이미지

Hyunsoo Luke HA

석사를 마치고 현재는 Upstage에서 전문연구요원으로 활동중인 AI 개발자의 삽질 일지입니다! 이해한 내용을 정리하는 용도로 만들었으니, 틀린 내용이 있으면 자유롭게 의견 남겨주세요!

,