Wykonuję projekt uczenia maszynowego w Pythonie, więc muszę równolegle przewidywać funkcję, której używam w moim programie.multiprocessing.dummy w Pythonie nie wykorzystuje 100% procesora
from multiprocessing.dummy import Pool
from multiprocessing import cpu_count
def multi_predict(X, predict, *args, **kwargs):
pool = Pool(cpu_count())
results = pool.map(predict, X)
pool.close()
pool.join()
return results
Problem polega na tym, że wszystkie moje procesory zostały załadowane tylko na 20-40% (w sumie jest to 100%). Używam metody wieloprocesowej.dummy, ponieważ mam problem z modułem wieloprocesowym w funkcji trawienia.
Lub użyj opartej na GIL implementacji Pythona, takiej jak Jython lub IronPython ... lub importuj wersję GHP-less STP PyPy z 2015 roku. :) – abarnert
[Wątki Python są rzeczywistymi wątkami systemu operacyjnego: mogą działać równolegle (jeśli istnieją) są wieloma rdzeniami procesora). Tylko czysty kod Pythona jest ograniczony przez GIL. Rozszerzenia C, takie jak 'lxml',' regex', 'numpy' mogą i wypuszczają GIL, a zatem kilka wątków może i działa równolegle.] (Http://stackoverflow.com/questions/26234301/synchronise-muti-threads -w-python # comment41151656_26234761) – jfs
@jfs Więc dlaczego nie działa dla OP? – endolith