저는 파이썬에 초보자입니다. 제 데이터를위한 기능을 계산하고 파일에서 처리하고 작성해야하는 목록을 반환하는 함수가 있습니다. 계산 및 다음 콜백 함수를 사용하여 파일에 쓸 수 있지만 콜백 함수를 호출하지 않는, 나는 그것에 몇 가지 인쇄 문을 넣었지만 그것은 확실히 호출되지 않습니다. 내 코드는 다음과 같습니다apply_async 콜백 함수가 호출되지 않습니다.
이def write_arrow_format(results):
print("writer called")
results[1].to_csv("../data/model_data/feature-"+results[2],sep='\t',encoding='utf-8')
with open('../data/model_data/arow-'+results[2],'w') as f:
for dic in results[0]:
feature_list=[]
print(dic)
beginLine=True
for key,value in dic.items():
if(beginLine):
feature_list.append(str(value))
beginLine=False
else:
feature_list.append(str(key)+":"+str(value))
feature_line=" ".join(feature_list)
f.write(feature_line+"\n")
def generate_features(users,impressions,interactions,items,filename):
#some processing
return [result1,result2,filename]
if __name__=="__main__":
pool=mp.Pool(mp.cpu_count()-1)
for i in range(interval):
if i==interval:
pool.apply_async(generate_features,(users[begin:],impressions,interactions,items,str(i)),callback=write_arrow_format)
else:
pool.apply_async(generate_features,(users[begin:begin+interval],impressions,interactions,items,str(i)),callback=write_arrow_format)
begin=begin+interval
pool.close()
pool.join()
파일이 너무 길기 때문에 문제가되는 코드를 붙여 넣습니다. 간격 변수가 지정되었습니다 – Eliethesaiyan
콜백 함수가 호출되지 않도록 코드에 오류가 표시되지 않습니다. 좋은 디버깅 기법은 문제를 보여주는 아주 간단한 예제가 나올 때까지 점진적으로 코드를 축소하는 것입니다. 두 가지 아주 좋은 일 중 하나가 발생합니다. 여기에 게시 할 수있는 실행 가능한 최소 예제가 있거나 (좋은 답변을 얻을 수있는 가능성을 크게 높일 수 있음) 오류를 발견 할 수있는 코드를 단순화하는 과정에서 . – unutbu
@unutbu 나는 또한 콜백이 호출되지 않는 이유를 모르지만 ... 모든 메소드가 올바르게 실행되지만 콜백이 아니라 defiinetly ... i는 디버깅을 시도했지만 헛되다 .i는 프린트를 제외한 모든 코드를 주석 처리했다. .하지만 여전히 호출하지 마십시오 – Eliethesaiyan