Ich bin ein Neuling zu Python, ich habe Funktion, die Feature für meine Daten berechnen und dann eine Liste, die in der Datei verarbeitet und geschrieben werden soll., .. Ich benutze Pool, um das zu tun Berechnung und dann und verwenden Sie die Callback-Funktion, um in Datei schreiben, aber die Callback-Funktion wird nicht aufgerufen werden, habe ich einige print-Anweisung in es, aber es ist definitiv nicht aufgerufen. mein Code wie folgt aussieht:apply_async Callback-Funktion nicht aufgerufen
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()
Da die Datei zu lang ist .. Ich eingefügt die Codes, die problematics .. interval Variable – Eliethesaiyan
Ich sehe keinen Fehler in Ihrem Code, die verhindern würde, dass die Callback-Funktion aufgerufen werden. Eine gute Debugging-Methode besteht darin, Ihren Code progressiv zu reduzieren, bis Sie ein sehr einfaches Beispiel haben, das das Problem veranschaulicht. Eines von zwei sehr guten Dingen wird passieren: Entweder wirst du ein * runnable * minimales Beispiel haben, das du hier posten kannst (was deine Chance, eine gute Antwort zu bekommen, erheblich erhöht) oder bei der Vereinfachung des Codes, wo der Fehler liegt . – unutbu
@unutbu Ich weiß auch nicht, warum Rückruf wird nicht aufgerufen ... alle Methoden laufen korrekt, aber definetly nicht der Rückruf .. ich versuchte, es zu debuggen, aber vergeblich..ich kommentierte alle Codes außer dem Druck .. ., aber immer noch nicht – Eliethesaiyan