2013-06-17 2 views
5

documentation에서 언급하지 않은 볼록 최적화를위한 cvxopt package 문제가 생겼습니다. 아무도 그것이 무엇을 일으키는 지 알고 최선을 다하는 방법을 알고 있는지 궁금합니다.파이썬 다중 처리 모듈을 cvxopt 패키지와 함께 사용

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

스크립트는 상기 메인 프로그램과 병렬로 실행하는 네 개의 프로세스를 시작한다. 4 개의 코어가있는 머신에서 나는 각각 100 %의 CPU를 사용하는 4 개의 프로세스를가집니다.

그러나 처음에 import cvxopt 문을 주석 해제하면 각 프로세스가 다른 프로세스와 동기화 된 것처럼 CPU의 25 % 만 차지합니다.

나는 설명과 주위에 관심이 있습니다. 내가 간과 한 문서에 분명한 설명이 있다면 사과드립니다. 문제

나는이 아래를 실행하고 환경은 리눅스 3.5.0 (우분투 12.10 유통), 파이썬 3.2.3입니다을 재생하는 방법에 대한


세부 사항.

  1. 가하기 matplotlib 1.2.1 (. 그것은 cvxopt 예제 스크립트의 대부분에 사용되는 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 패키지 from heresudo python3 ./setup.py install을 사용하여 cvxopt 1.1.6이 설치되었습니다.

+1

당신의 OS를 언급하는 것이 도움이 될, 그리고 수도 당신은 https://github.com/cvxopt/cvxopt/blob/master/INSTALL –

+0

@에 나와있는 옵션 의존성의 사용 여부 JanneKarila 메모에 다시 한번 감사드립니다. 지금 질문에 대한 자세한 내용을 추가했습니다. – jogojapan

답변

관련 문제