我想知道为什么我的程序不会创建不同的随机数,如果我使用Pipe
和Process
来创建它们并行。我的代码
import numpy as np
from multiprocessing import Process, Pipe
def createNumbers(conn):
result = np.random.randint(0,2, size=(4))
conn.send(result)
parent_conn, child_conn = Pipe()
for i in range(3):
process = Process(target=createNumbers, args=(child_conn,))
process.start()
process.join()
result = parent_conn.recv()
print(result)
创建三个相同的向量
(0,1,1,1)
(0,1,1,1)
(0,1,1,1)
如果我使用ThreadPool
代替它,它可以正常工作。代码
from multiprocessing.pool import ThreadPool
import numpy as np
def createNumbers():
return np.random.randint(0,2, size=4)
for i in range(3):
pool = ThreadPool(processes=1)
process = pool.apply_async(createNumbers)
result = process.get()
print(result)
创建最多三个相同的向量
(1,0,1,0)
(0,0,1,0)
(1,0,0,0)
有人知道为什么Pipe
和Process
的程序会创建相同的数字吗?