파이썬 콜백 함수 예제

다음 예제에서는 last_best_value 및 last_best_running_time이라는 두 개의 필드가 있는 전용 클래스를 만듭니다. 콜백 메서드는 LocalSolver의 통계와 함께 이러한 두 필드를 사용하여 검색을 중지하거나 계속하기로 결정합니다. 콜백은 LocalSolver.add_callback(메서드)에 등록됨: 호출이 프로세서 함수에 의해 수행중인 작업의 진행 률을 보고하기 위해 원하는 간격으로 호출되는 것을 볼 수 있습니다. 이 솔루션은 이전보다 훨씬 낫습니다. 이제 우리는 우리가 묻는 질문에 따라 fibonacci 기능을 변경할 필요가 없습니다. 우리는 모듈로 fibonacci 함수를 이동, 가져 와서 외부 자원으로 사용할 수 있습니다. 고정이 필요한 경우 한 곳에서 고정할 수 있으며 사용되는 모든 장소가 이점을 누릴 수 있습니다. 마지막으로, fibonacci 함수에 이것이 좋은 값이 아니며 다른 값으로 호출 될 것으로 예상되는 하나의 False 값만 있는 튜플을 반환합니다. LocalSolver를 사용하면 자신의 함수/프로시저를 호출하여 검색 중에 특정 이벤트에 대응할 수 있습니다. 예를 들어 검색을 중지할 시기를 제어하거나 검색 중에 특정 정보를 표시하는 데 사용할 수 있습니다.

이 기능은 API를 통해 LocalSolver를 사용해야합니다. LSP 언어에서는 사용할 수 없습니다. 우리가 설정한 안전 한계에 도달하면 True 및 None을 반환합니다. True는 검색이 종료되었음을 피보나치 함수에 나타내고 없음은 최종 사용자에게 대답을 찾을 수 없음을 나타냅니다. 더 좋은 것은 콜백으로 만드는 함수를 서로 호출하거나 다른 시퀀스 생성 함수에 전달하여 다시 사용할 수도 있다는 것입니다. 이제 특정 조건을 확인하고 조건과 일치하는 첫 번째 값을 반환할 수 있는 간단한 함수가 있습니다. 내일 “19로 나눌 수있는 첫 번째 피보나치 번호는 무엇입니까?”, 또는 어쩌면 “다른 숫자의 제곱인 첫 번째 피보나치 번호는 무엇입니까?”라고 대답해야하는 경우 모든 콜백 함수는 두 개의 인수를 취해야합니다. 첫 번째 인수는 함수가 등록될 때 주어진 개체입니다. VMD는 이 개체를 사용하지 않으며 콜백 함수가 호출될 때 단순히 저장하고 콜백에 전달합니다. 콜백 함수에 대한 두 번째 인수는 콜백 유형에 따라 0개 이상의 요소를 포함하는 튜플이 됩니다.