Hi guys, I’m asking a question about using multipleprocessing module to print random numbers.
When I was using the “numpy.random.rand” produce random numbers, I found that some of the produced values from different cores are the same. But the random.uniform can work just ok.
Here is the code.
import multiprocessing
import numpy as np
import random
def print_map(_):
print(np.random.rand(1))
# print (random.uniform(0, 1))
num_data = 8
cores = 8
pool = multiprocessing.Pool(processes=cores)
print_random = pool.map(print_map, np.arange(num_data))
Presumably numpy duplicates its random number generator once per process, if so then each process uses the same random seed. At a guess the fourth result is different because that thread’s setup stage was delayed.
If you really want different random numbers every time, you could call numpy.random.seed(random.randint(some_large_integer)) in print_map
Thanks ! In your way the “numpy” module can produce different numbers.
But I still couldn’t find where the random number generator was duplicated. Actually the data I produced several days ago using “numpy” seemed to have no such problems.
I don’t know if this has a relationship with the recent update of my Ubuntu. T_T
I think so. You can have a try like this:
The main reason is resulted from the fact that no seed is input to the numpy.random.seed(). Providing a seed for each process can also be a solution.