Pandas und Numpy Thread Sicherheit

Ich benutzepandas Auf einem Webserver (Apache + Modwsgi + Django) und habe einen schwer zu reproduzierenden Fehler, den ich jetzt entdeckt habe, weil Pandas nicht threadsicher sind.

Nach viel Code-Reduktion habe ich endlich ein kurzes Standalone-Programm gefunden, mit dem das Problem reproduziert werden kann. Sie können es unten sehen.

Der Punkt ist: entgegen der Antwort vondiese Frag Dieses Beispiel zeigt, dass Pandas auch bei sehr einfachen Operationen abstürzen können, bei denen ein Datenrahmen nicht geändert wird. Ich kann mir nicht vorstellen, wie dieses einfache Code-Snippet mit Threads möglicherweise unsicher sein könnte ...

Die Frage bezieht sich auf die Verwendung von Pandas und Numpy in einem Webserver. Ist es möglich? Wie soll ich meinen Code mit Pandas reparieren? (Ein Beispiel für die Verwendung von Sperren wäre hilfreich.)

Hier ist der Code, der einen Segmentierungsfehler verursacht:

import threading
import pandas as pd
import numpy as np

def let_crash(crash=True):
    t = 0.02 * np.arange(100000) # ok con 10000                                                                               
    data = pd.DataFrame({'t': t})
    if crash:
        data['t'] * 1.5  # CRASH
    else:
        data['t'].values * 1.5  # THIS IS OK!

if __name__ == '__main__':
        threads = []
        for i in range(100):
            if True:  # asynchronous                                                                                          
                t = threading.Thread(target=let_crash, args = ())
                t.daemon = True
                t.start()
                threads.append(t)
            else:  # synchronous                                                                                              
                let_crash()
        for t in threads:
            t.join()

Meine Umgebung: Python 2.7.3, NumPy 1.8.0, Pandas 0.13.1

Antworten auf die Frage(2)

Ihre Antwort auf die Frage