特定のユーザーへの推奨事項をファイルにピクルするメソッド getRecommendations を呼び出したいと思います。動作する本のコードを使用しました。しかし、1 つのコアだけが機能することがわかりました。すべてのコアが機能するようにしたいと考えています。
これが方法です。
def getRecommendations(prefs,person,similarity=sim_pearson):
print "working on recommendation"
totals={}
simSums={}
for other in prefs:
# don't compare me to myself
if other==person: continue
sim=similarity(prefs,person,other)
# ignore scores of zero or lower
if sim<=0: continue
for item in prefs[other]:
# only score movies I haven't seen yet
if item not in prefs[person] or prefs[person][item]==0:
# Similarity * Score
totals.setdefault(item,0)
totals[item]+=prefs[other][item]*sim
# Sum of similarities
simSums.setdefault(item,0)
simSums[item]+=sim
# Create the normalized list
rankings=[(total/simSums[item],item) for item,total in totals.items( )]
# Return the sorted list
rankings.sort( )
rankings.reverse( )
ranking_output = open("data/rankings/"+str(int(person))+".ranking.recommendations","wb")
pickle.dump(rankings,ranking_output)
return rankings
経由で呼び出されます
for i in customerID:
print "working on ", int(i)
#Make this working with multiple CPU's
getRecommendations(pickle.load(open("data/critics.recommendations", "r")), int(i))
ご覧のとおり、すべてのお客様に推奨するようにしています。これは後で使用されます。
では、このメソッドをマルチプロセスするにはどうすればよいですか? いくつかの例やドキュメントを読んでもわかりません