12 Stimmen

Ist shelve in Python thread sicher?

Wird das Regal in Python für die Sicherung von Daten verwendet, die threadsicher ist? Wenn nicht, was ist eine gute Alternative?

14voto

Mahmoud Abdelkader Punkte 20383

Aus der Standardbibliotheksdokumentation zum Shelve-Modul unter dem Abschnitt Einschränkungen:

Das Shelve-Modul unterstützt keine gleichzeitigen Lese-/Schreibzugriffe auf gespeicherte Objekte. (Mehrere gleichzeitige Lesezugriffe sind sicher.)

Ich würde annehmen, dass es wahrscheinlich von der Implementierung abhängt und in diesem Fall, um sicher zu sein, würde ich schlussfolgern, dass es definitiv nicht thread-sicher ist.

3voto

Andreas Jung Punkte 1

Alternativen: ZODB

http://www.zodb.org/

-1voto

AndrewE Punkte 27
Threads = # Anzahl der Threads

thread_moment = [False for _ in range(Threads)] 

def job(x):  # x würde der Index des Threads sein  

    lock.aquire()

    # Öffnen/Bearbeiten/Aktualisieren/Schließen Ihrer Regalfachdatei

    thread_moment[x] = True 

    lock.release()

    while True:
        if all(thread_moment) == True:
            thread_moment = [False for _ in range(threads)]
            break
        else:
            time.sleep(1)

    # Fahren Sie mit Ihrem Skript fort

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X