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?