이 경고는 sklearn
에 사용 된 다중 처리 라이브러리 joblib
에서 유래합니다. 병렬 메커니즘이 하위 프로세스를 생성 할 수없는 daemonic
작업자를 사용하는 multiprocessing.Pool
에 의존하기 때문에 발생합니다.
sklearn
과 함께이 제한 사항을 전달하는 간단한 방법은 없습니다. 프로세스를 수동으로 생성하고 관리하고자 할 수 있습니다. 무엇을하고 있는지 알고 계신다면 Process
을 작성하여 기능을 n_jobs > 1
과 함께 실행하십시오.
이것은 프로세스를 관리하는 동시에 여러 프로세스를 한 번에 실행하지 않는 것을 의미합니다. daemonic
도 제작하지 않는 것이 중요합니다. 예를 들어 : 모든 프로세스가 동시에 실행이가 순차 구현보다 더 최악의 실적으로 이어질 수 있음을
def target(j):
from time import sleep
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_jobs=2)
rf.fit(np.random.random(size=(100, 100)), np.random.random(100)> .6)
print(j, 'done')
pr = [mp.Process(target=target, args=(i,)) for i in range(10)];\
[p.start() for p in pr]
[p.join() for p in pr]
참고.
그렇다고해서 중첩 된 병렬 처리를 사용하는 것이 좋은 아이디어는 아닙니다. 모든 코어는 더 많은 시간을 소모하는 작업에 사용해야하며 다른 작업은 순차적으로 실행되어야합니다.