Torne o módulo aleatório thread-safe em Python
Eu tenho um aplicativo que exige os mesmos resultados, dada a mesma semente aleatória. Mas eu acho random.randint não threadsafe. Eu tentei mutex mas isso não funciona. Aqui está o meu código experimental (longo, mas simples):
<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>
Eu quero codificar para imprimirverdade verdade, mas é uma chance para darfalso, falso. Como posso fazer randint threadsafe?