Python中for循环的多线程处理

Python中for循环的多线程处理,python,multithreading,Python,Multithreading,我有一个for循环,在Python中如下所示: def layerOneBackprop(l, a): for x in range(len(l.weights)): for y in range(len(l.weights[x])): l.weightDelta[x][y] = a.weightDelta[0][x] * a.weights[0][x] * dSigmoid(l.layerOut[x]) dW = l.in

我有一个for循环,在Python中如下所示:

def layerOneBackprop(l, a):
    for x in range(len(l.weights)):
        for y in range(len(l.weights[x])):
            l.weightDelta[x][y] = a.weightDelta[0][x] * a.weights[0][x] * dSigmoid(l.layerOut[x])
            dW = l.inVals[y] * l.weightDelta[x][y]  
            l.weights[x][y] = l.weights[x][y] - (learningRate * dW)
我目前的问题是,这个循环(实际上是整个函数)非常慢,因为每次调用都需要30-40秒的时间。我希望并行化这个函数将有助于它在我的服务器上运行得更快。在Python中如何实现这一点


我见过线程实现,但我也读到,Python的GIL可能会导致我的代码本质上变成单线程。如果没有这些问题,这怎么可能实现呢?

听起来很像:看起来你在为深层神经网络编写一些功能。老实说,通过切换到
numpy
theano
并使用其本机矩阵操作而不是使用python的内置列表,您可能会获得更高的性能。感谢您的提示!我现在正在使用
numpy
,这也不是我对
numpy
最优化的代码。我想看看在我以前的实现中是否可能。正如
theano
所说,我不能使用它,因为这段代码将在一个环境中运行。多处理是您要寻找的答案,但我同意John的说法,这不是正确的答案。除非你有一台16核的机器,多处理真的不会有什么帮助+1到
numpy
,+1到
pypy
,+1到
cython
当阻止IO操作释放Python的GIL时,密集的计算不会释放,因此Python中的多线程根本不起作用。如果您查看提供的链接(您的问题实际上是它的副本),您将发现为此提出的多处理。