gpt4 book ai didi

python - 将 Python 的多处理模块与 cvxopt 包一起使用

转载 作者:太空狗 更新时间:2023-10-30 01:34:35 25 4
gpt4 key购买 nike

我刚遇到 cvxopt package 的问题对于凸优化,我没有在 documentation 中找到它.我想知道是否有人知道导致它的原因以及如何最好地解决它。

问题是,当您在使用 multiprocessing.Process 的 Python 程序中import cvxopt 时在实例中,进程不能再并行运行。它们似乎自动同步。请注意,无论程序是否实际使用了任何 cvxopt 函数,都会发生这种情况。简单地导入包会导致这种效果。

示例:

# import cvxopt
from multiprocessing import Queue, Process

def compute(queue):
"""
Pick integers from a queue and perform some useless
calculations on them just to keep the CPU busy.
"""
total = 0
while True:
item = queue.get()
if item is None:
break
for i in range(item):
total += i

if __name__ == '__main__':
queue = Queue()
procs = []
for i in range(4):
proc = Process(target = compute,
args = (queue,))
proc.start()
procs.append(proc)

for i in range(100000):
queue.put(i)
for proc in procs:
queue.put(None)
for proc in procs:
proc.join()

上面的脚本启动了四个与主程序并行运行的进程。在一台有四个内核的机器上,我有四个进程,每个进程占用 100% 的 CPU。

但是,当在开始时取消注释 import cvxopt 语句时,每个进程最终只占用 25% 的 CPU,就好像它与其他进程同步一样。

我对解释和解决方法都很感兴趣。如果我忽略了文档中明显的解释,我深表歉意。


关于如何重现问题的详细信息

我运行的环境是 Linux 3.5.0(Ubuntu 12.10 发行版)和 Python 3.2.3。这就是我安装 cvxopt 的方式:

  1. 安装 matplotlib 1.2.1(我这样做是因为它包含 pylab,许多 cvxopt 示例脚本中都使用了它。我不确定这是否是实际要求)。我用了this tar.gz package并执行了 sudo python3 setup.py install 来安装它。

  2. 安装了 BLAS 和 ATLAS

    sudo apt-get install libblas-dev libblas3 libatlas-base-dev libatlas3-base libblas-test libopenblas-base libopenblas-dev

    以上可能超出了必要,但如果这导致任何问题,我会感到惊讶。

  3. 使用 tar.gz 包安装了 cvxopt 1.1.6 from heresudo python3 ./setup.py install

最佳答案

也许与未发布的 Python GIL 有关?

参见:http://comments.gmane.org/gmane.comp.python.scientific.user/15678

关于python - 将 Python 的多处理模块与 cvxopt 包一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17143339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com