파이썬 멀티프로세싱
조회수 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()
이렇게 하시면 될 것 같습니다.
댓글 입력