다음은 다중 처리 모듈의 풀을 사용하는 병렬 코드입니다. 여기에서 매개 변수 d는 튜플이며 word_number는 정수이고 word_count는 문서입니다.파이썬 다중 처리 cPickle.PicklingError
cPickle.PicklingError: Can't pickle <class '__main__.doc_'>: attribute lookup __main__.doc_ failed
이 문서와 튜플 내 매개 변수 D의 문제인가 :
def perDoc(d):
score = 0.0
word_count = d.word_count
word_number = d.word_number
for i, word in enumerate(q):
if word not in corpus_query_min:
continue
if word not in word_count:
frequency = 0
else:
frequency = word_count.get(word)
score += np.log(np.float(frequency + miu * corpus_word_count[i]/corpus_number)/
(word_number + miu))
#loglh[d.docID] = score
if __name__ == '__main__':
pool = Pool(4)
pool.map(perDoc, doc_query_list)
pool.close()
는이 같은 오류가있어?
당신이 (아직 아니지만 MCVE) 추가 정보를 준 이후
문제는'doc_query_list'의 내용과 관련이 있습니다 만, 문제는 그것을 생성 한 코드를 제공하지 않았습니다. 도움이 필요하면 [MCVE]를 제공해주십시오. – ShadowRanger
그 부분을 잊어서 죄송합니다. 아래에서 doc_tuple은'collections.namedtuple'입니다. \t'doc_query_list.append (doc_tuple (d.docID, doc_temp, dword_number))' –
@ Yangyang.Guo. 그러나 어떤 유형의 객체가'문서 '입니까? 명명 된 튜플과 그 안에 들어있는 모든 객체의 정의를 표시합니다. – ekhumoro