我有以下代码。 generate(self, num)
是产生一组数字,并将其转换成自己的二进制表示一类方法:使用多处理器时出现问题。池
def generate(self, num):
M = [random.randint(0, 2 ** 64 - 1) for _ in range(num)]
M = list(set(M))
M = [('{0:0' + str(64) + 'b}').format(x) for x in M]
M = np.asarray([list(map(int, list(x))) for x in M])
return M
def run(self):
M = []
num = 10000
mlp = multiprocessing.Pool(multiprocessing.cpu_count()-1)
for i in xrange(0, num):
res = mlp.apply_async(self.generate, args=(i,))
M.append(res) # Here I think it is not good!!
mlp.close()
mlp.join()
追加到M
结果是不正确的,我得到<multiprocessing.pool.ApplyResult object at 0x11ae6f690>
。我怎样才能解决这个代码来实现并行性是一种有效的方法?
'解析度= mlp.apply_async(self.generate,ARGS =(我))''不过是i'递增,所以你觉得用什么'M = [random.randint发生(0 ,2 ** 64 - 1)for _ in range(num)]'? – roganjosh