[Scikit-learn / Numpy] Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) 에러 해결법
Machine Learning/ML 개발 2020. 9. 17. 18:10반응형
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의 수를 제한함으로써 다른 라이브러리와의 충돌을 막을 수 있다.
반응형