我用python编写了一个多处理程序。具体说明如下:nodes = multiprocessing.Manager().list()
lock = multiprocess.Lock()
def get_elems(node):
#get elements by send requests
def worker():
lock.acquire()
node = nodes.pop(0)
lock.release()
elems = get_elems(node)
lock.acquire()
for elem in elems:
nodes.append(node)
lock.release()
if __name__ == "__main__":
node = {"name":"name", "group":0}
nodes.append(node)
processes = [None for i in xrange(10)]
for i in xrange(10):
processes[i] = multiprocessing.Process(target=worker)
processes[i].start()
for i in xrange(10):
processes[i].join()
在程序开始运行时,似乎一切正常。跑了一会儿之后。放慢程序的速度。使用多线程时也存在这种现象。我看到Python中有一个全局解释器锁,所以我改为多处理。但仍有这种现象。完整的代码在here中。我试过Cython,还有这个现象。我的代码有问题吗?或者说python中是否存在与生俱来的缺陷呢?在