Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法使多进程工作_Python_Python 2.7_Multiprocessing_Jupyter Notebook - Fatal编程技术网

Python 无法使多进程工作

Python 无法使多进程工作,python,python-2.7,multiprocessing,jupyter-notebook,Python,Python 2.7,Multiprocessing,Jupyter Notebook,我必须实现一个并行的软件来计算大规模的距离矩阵 这是我写的代码: 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

我必须实现一个并行的软件来计算大规模的距离矩阵

这是我写的代码:

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()

这里缺少什么?

如中所述,您必须首先清空
队列
,然后才能加入
流程

您的逻辑最终陷入死锁,因为进程无法终止,因为它们正在等待
队列中的消息被使用。

您所说的“适当对象”是什么意思?如果您将print语句放入
compute\u distance\u corcoeff
以检查它是否实际在运行,它是否被打印?可能只是花了很长时间,
子集有多大?
我建议您使用一个,然后
join()
创建的
对象。如果您使用的是Windows,请确保使用添加一个
(如果_uname_u=='_u main:
)将主进程代码与子进程代码分开。是否缺少
p.close()