Machen Sie das Zufallsmodul threadsicher in Python

Ich habe eine Anwendung, die die gleichen Ergebnisse bei gleichem Zufallsstartwert erfordert. Aber ich finde random.randint nicht threadsicher. Ich habe versucht, Mutex, aber das funktioniert nicht. Hier ist mein Experimentiercode (lang, aber einfach):

<code>import threading
import random

def child(n, a):
    g_mutex = threading.Lock()
    g_mutex.acquire()
    random.seed(n)
    for i in xrange(100):
        a.append(random.randint(0, 1000))
    g_mutex.release()

def main():
    a = []
    b = []
    c1 = threading.Thread(target = child, args = (10, a))
    c2 = threading.Thread(target = child, args = (20, b))
    c1.start()
    c2.start()
    c1.join()
    c2.join()

    c = []
    d = []
    c1 = threading.Thread(target = child, args = (10, c))
    c2 = threading.Thread(target = child, args = (20, d))
    c1.start()
    c1.join()
    c2.start()
    c2.join()

    print a == c, b == d

if __name__ == "__main__":
    main()
</code>

Ich möchte zum Drucken codierenWahr, wahr, aber es ist eine Chance zu gebenfalsch, falsch. Wie kann ich threadsafe randint machen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage