2014-06-14 6 views
0

작은 통계 함수를 구현하고 다중 처리로 병렬 처리했습니다. 코드의 전체 구조는 다음과 같습니다Python, 클래스가있는 다중 처리

def worker(args, no): 
    f = Stat.fit(args) 
    return f.result 

class Stat: 
    def fit(self): 
     doing various things... 

    def bootstrap(self): 
     p = mp.Pool(mp.cpu_count()) 
     parameter = ... #set parameters for Stat 
     worker = functools.partial(worker, parameter) 

     for i, _ in enumerate(p.imap_unordered(worker, range(1000))): 
      pass 

그래서, 합계 클래스의 부트 스트랩 방법은 합계 클래스의 인스턴스를 생성 기능을 실행하는 프로세스를 호출하고 적합() 메소드를 실행합니다. 아마도이 방법은 아마도 비효율적 일 것입니다. 클래스를 함수로 대체하는 것이 더 나은가? 또는이 클래스를 사용하면 다중 처리 성능에 영향을 미치지 않습니까?

답변

0

비효율적이지 않습니다 (성능에는 영향을 미치지 않습니다). 단지 정통적입니다. bootstrapStat 밖으로 가져 가면 해당 클래스의 메소드가 도움이되는 것처럼 보이지 않으므로 아마도 더 깨끗합니다.

def worker(args, no): 
    f = Stat.fit(args) 
    return f.result 

def bootstrap(self): 
    p = mp.Pool(mp.cpu_count()) 
    parameter = ... #set parameters for Stat 
    worker = functools.partial(worker, parameter) 

    for i, _ in enumerate(p.imap_unordered(worker, range(1000))): 
     pass 

class Stat: 
    def fit(self): 
     doing various things... 
관련 문제