설정 한 시간 내에 완료되지 않으면 기능을 중지하기 위해 멀티 프로세싱을 사용하고 있습니다.기능 파이썬을 종료하는 경우 부분 결과 가져 오기
다음def worker(number):
result = []
for i in range(number):
x = do_things(i) #this can take a long time
result.append(x)
return result
p = multiprocessing.Process(target=worker, args=(random_number,))
p.start()
p.join(10) # Will timeout after 10 seconds
지금 시간이 오래 걸립니다 함수의 내부에 아직
if p.is_alive():
p.terminate()
p.join()
print('killed process because it took too long')
else:
p.join()
print('process finished')
를 완료하지 않은 경우를 죽일, 값이 추가되고있다 : 여기
내 코드입니다 목록을 작성하고 함수가 완료되었는지 여부에 관계없이 목록에있는 상태로 가져 오려고합니다.
나는이 시도 사용하여 공유 배열 추가로 내부 기능, ̶하지만이 작동하지 않음 때 죽일 ̶p̶r̶o̶c̶e̶s̶s̶.̶
다음내가했는데, 내가 공유 사전을 의미하는 것입니다하지 배열 :
는def worker(number, dct):
for i in range(number):
x = do_things(i) #this can take a long time
dct[i] = x
dct = {}
p = multiprocessing.Process(target=worker, args=(random_number, dct,))
p.start()
p.join(10) # Will timeout after 10 seconds
if p.is_alive():
p.terminate()
p.join()
print(dct.values())
print('killed process because it took too long')
else:
p.join()
print(dct.values())
print('process finished')
"공유 배열을 사용해 보았습니다."어떻게이 작업을 수행 했습니까? – roganjosh
찾으시는 답변은 대기열이며 [docs] (https://docs.python.org/3.6/library/multiprocessing.html?highlight=multiprocessing#exchanging-objects-between-processes)에서 찾을 수 있습니다. – pstatix
질문이 업데이트되었습니다. –