python 3.3에서 작동하도록 멀티 프로세싱을 얻으려고 노력하는 동안 (필자는 joblib로 빨리 되돌아 가서 더 쉽게 작업 할 수있게되었습니다.) 그러나 나는 (내 관점에서) 아주 이상한 것을 경험한다. 이 코드를 실행하는 경우 (작동하는지 단지 테스트) :Joblib parallel이 n 작업에 의해 시간을 늘림
이Parallel(n_jobs=1)(delayed(sqrt)(i**2) for i in range(200000))
그것은 약 9 초 정도 걸리지 만 n_jobs
을 증가시켜 실제로 오래 걸립니다 ... n_jobs=2
위해 25 초 소요 n_jobs=4
이 27 초 정도 걸립니다.
내가 틀렸다면 정정 해주십시오. 그러나 n_jobs
이 증가하면 훨씬 더 빨리 진행되지 않아야합니까? 나는 Intel I7 3770K를 가지고 있기 때문에 내 CPU의 문제는 아니라고 생각한다.
아마 내 원래의 문제는 대답이나 해결책의 가능성을 높일 수 있습니다.
나는 30k + 문자열, data
의 목록을 가지고 있으며 각 문자열 (다른 문자열과 무관)로 뭔가를해야합니다. 약 14 초가 걸립니다. 이것은 내 코드가 작동하는지 확인하는 테스트 케이스에 불과합니다. 실제 애플리케이션에서는 아마도 100k + 엔트리 일 것이므로 다중 계산이 필요합니다. 이것은 전체 계산의 일부에 불과하기 때문입니다. 이것은 계산의이 부분에서 수행해야 할 것입니다 : 코어의 최대 수는 사용으로
data_syno = []
for entry in data:
w = wordnet.synsets(entry)
if len(w)>0: data_syno.append(w[0].lemma_names[0])
else: data_syno.append(entry)
당신이 우분투를 사용하는 경우,이 스레드를 확인하십시오 http://stackoverflow.com/questions/15639779/python-what-determines-whether-different-processes-are-assigned-to-the-same-or – oteCortes
아니요, 저는 Windows 7 64 비트를 사용하고 있습니다. – Tim