我必须实现一个并行的软件来计算大规模的距离矩阵。你知道吗
这是我写的代码:
subset = #[list of proper objects]
nthreads = 10
def compute_distance_corcoeff(geneset, offset, q):
for i in range(offset, len(geneset), nthreads):
g1 = geneset[i]
dvect = [np.corrcoef(g1.expr, g2.expr)[0,1] for g2 in geneset]
q.put((i,dvect))
queue = Queue()
processes = []
for off in range(nthreads):
processes.append(Process(target=compute_distance_corcoeff, args=(subset, off, queue)))
for p in processes:
p.start()
for p in processes:
p.join()
然后我将从队列中收集部分结果。你知道吗
不幸的是,看起来什么都没有发生。它似乎被困在join()
。你知道吗
我错过了什么?你知道吗
如multiprocessing programming guidelines中所述,必须首先清空
Queue
,然后才能加入Process
。你知道吗由于进程正在等待
Queue
中的消息被使用,因此无法终止,因此您的逻辑最终会陷入死锁。你知道吗相关问题 更多 >
编程相关推荐