파이썬 멀티프로세싱

조회수 753회

이 프로그램에서 정답을 찾았을 때 그 순간 모든 자식 프로세스를 죽이고 그 시간을 측정할 수 있게 하는 방법이 있나요?

import multiprocessing
import time
import sys

start_time = time.time()

def bruteForce(st):
    for j in range (48,137):
        for k in range (48,137):
            for l in range (48,137):
                passWord = (chr(st)+chr(j)+chr(k)+chr(l))
                if passWord == ans :
                    print ("answer :", passWord)
                    return 0

def control(st):
    if bruteForce(st)==0:
        return 0
num_list = []
ans = 'A7uD'

for i in range(48,137):
    num_list.append(i)

if __name__ == '__main__' :
    pool = multiprocessing.Pool(processes=89)
    pool.map(control, num_list)
    pool.close()
    pool.join()
print("--- %s seconds ---" % (time.time() - start_time))

1 답변

  • import multiprocessing
    import time
    import sys
    
    def bruteForce(st):
        for j in range (48,137):
            for k in range (48,137):
                for l in range (48,137):
                    passWord = (chr(st)+chr(j)+chr(k)+chr(l))
                    if passWord == ans :
                        print ("answer :", passWord)
                        return 0
    
    def control(st):
        if bruteForce(st)==0:
            return 0
    
    ans = 'A7uD'
    
    if __name__ == '__main__' :
        start_time = time.time()
        pool = multiprocessing.Pool(processes=89)
    
        def finished(self):
            print("--- %s seconds ---" % (time.time() - start_time))
            pool.terminate()
    
        pool.map_async(control, range(48,137), callback=finished)
        pool.close()
        pool.join()
    

    이렇게 하시면 될 것 같습니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)