2016-05-19 7 views
2

Ich habe Probleme Multithreading für die Berechnung der Beziehung zwischen der Liste der Kunden, die verschiedene Einkäufe in ihren Körben haben. Also ich habe ein Pandas Datenrahmen von 1.000 Kunden besteht, was bedeutet, dass ich die Verwandtschafts 1 Million mal berechnen und dies dauert zu langeMultithreading für Daten aus Datenframe Pandas

Ein Beispiel für den Datenrahmen zu verarbeiten sieht wie folgt aus:

ID  Item  
    1 Banana  
    1 Apple  
    2 Orange  
    2 Banana  
    2 Tomato  
    3 Apple  
    3 Tomato  
    3 Orange  

Hier ist die simplefied Version des Codes:

import pandas as pd 

def relatedness (customer1, customer2): 
    # do some calculations to measure the relation between the customers 

data= pd.read_csv(data_file) 
customers_list= list (set(data['ID'])) 

relatedness_matrix = pd.DataFrame(index=[customers_list], columns=[customers_list]) 
for i in customers_list: 
    for j in customer_list: 
     relatedness_matrix.loc[i,j] = relatedness (i,j) 

Vielen Dank im Voraus!

+0

Es ist eine Art unklar was du fragst. Denken Sie, dass Multithreading es schneller genug macht, dass es nicht mehr "zu lange" dauert? Wie viel schneller brauchst du? –

+0

Ich bin mir nicht sicher, ob ich den richtigen Begriff benutzt habe. Aber was ich brauche, ist, so viele Elemente wie möglich in der for-Schleife gleichzeitig zu machen, um die Verarbeitungszeit zu reduzieren. Thankx – goodX

+0

Sie können einige Hinweise auf Python-Threading http://stackoverflow.com/questions/2846653/how-to-use-threading-in-python bekommen, aber das Threading in Python verbessert nicht generell die Effizienz aufgrund der globalen Interpreter-Sperre . Die beste Lösung für eine Beschleunigung ist es, Ihre zeitaufwendigen Funktionen in C oder C++ neu zu schreiben und sie in ein Python-Modul zu kompilieren, das viel schneller läuft als nativer Python-Code. –

Antwort

Verwandte Themen