홀수인 경우 일련의 한 자리 숫자(0~9)를 처리해야 하며, 홀수인 경우 루프 해야 합니다. 짝수이면 해당 시간을 기다렸다가 모든 작업을 완료합니다. 0이면 오류이지만 작업을 종료할 필요는 없으며 일부 처리를 사용자 정의할 수 있습니다.
func 정의함수처리 요구 사항
콜백 처리 결과는 짝수와 0만 반환되며, 항상 홀수만 반환됩니다. ; 스레드 제어가 필요합니다. 풀 상태 , 짝수 및 0번 에 대해 예외 를 발생시키고 예외 처리를 캡처해야 합니다.
threadpool 정의 스레드 풀 동시성
# -*- coding: utf-8 -*- from threadpool import makeRequests, ThreadPool import time from multiprocessing import Process
class Finish(SyntaxWarning): pass
class PauseInfo(SyntaxWarning): pass pause_num = 0
0이면 False 반환, 다른 짝수는 True 반환
def func(para): if para == pause_num: print('start for %d and wait %ds' % (para, 4)) time.sleep(4) print('error bcs ',para) return False if para % 2 == 0: print('start for %d and wait %ds' % (para, para)) time.sleep(para) print('stop for', para) return True while True: print('continue for', para) time.sleep(para)
def callback(request, result): if result: raise Finish else: raise PauseInfo
Finish는 작업 완료를 표시하고 다시 예외를 발생시켜 종료하도록 유도합니다. 스레드 풀 처리;
def main_thread(paras): pool = ThreadPool(10) requests = makeRequests(callable_=func, args_list=paras, callback=callback) [pool.putRequest(req) for req in requests] while True: try: pool.wait() except Finish as e: raise SystemExit except PauseInfo as e: print('Pause bcs %d but will continue' % pause_num) except Exception as e: print('Unknown error so will quit') raise SystemExit
if name == 'main': while True: s = input('Input number list to test and any other word to quit\n') paras = [] for para in s: if para.isnumeric(): paras.append(int(para)) else: break try: thread_test = Process(target=main_thread, args=(paras,)) thread_test.start() thread_test.join(timeout=20) except TimeoutError as e: print('task timeout') except Exception as e: print('unknow error:',e)
108을 처리하면 1이 루프에서 처리되는 것을 인쇄에서 볼 수 있습니다. , 0이 처리되면 오류가 보고됩니다. 8이 처리되고 작업이 종료됩니다
테스트할 번호 목록과 종료할 다른 단어를 입력하세요
108
1 동안 계속
0 및 4초 대기
8초 시작 및 8초 대기
1 동안 계속
1 동안 계속
1 동안 계속
error bcs 0
1 동안 계속
bcs 0을 일시 중지하지만 계속
1 동안 계속
1 동안 계속
1 동안 계속
1 동안 계속
8 동안 중지
테스트할 번호 목록과 종료할 다른 단어 입력
위 내용은 Python의 Threadpool 스레드 풀 작업 종료 샘플 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!