Skip to main content

API 개요


클래스 ContextAwareThread

호출자의 컨텍스트에서 함수를 실행하는 스레드입니다. threading.Thread를 다른 코드 변경 없이 대체할 수 있으며, 스레드 내부에서 Call이 예상대로 동작하도록 보장합니다. Weave는 특정 컨텍스트 변수가 설정되어 있어야 하지만(call_context.py 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않으므로 호출 컨텍스트가 손실될 수 있습니다 — 바람직하지 않은 상황입니다! 이 클래스는 컨텍스트 변수 복사를 자동화하므로, 이 스레드를 사용하면 사용자가 기대하는 대로 “그냥 작동합니다”. 이 클래스 없이도 다음과 같이 작성하면 동일한 효과를 얻을 수 있습니다:

방법 __init__


속성 daemon

이 스레드가 데몬 스레드인지 나타내는 불리언 값입니다. start()가 호출되기 전에 설정해야 하며, 그렇지 않으면 RuntimeError가 발생합니다. 초기 값은 이 스레드를 생성한 스레드에서 상속됩니다. 메인 스레드는 데몬 스레드가 아니므로 메인 스레드에서 생성된 모든 스레드는 기본적으로 daemon = False로 설정됩니다. 데몬 스레드만 남으면 Python 프로그램 전체가 종료됩니다.

속성 ident

이 스레드의 식별자이며, 아직 시작되지 않았다면 None입니다. 이 값은 0이 아닌 정수입니다. get_ident() 함수를 참조하세요. 스레드가 종료되고 다른 스레드가 생성되면 스레드 식별자가 재사용될 수 있습니다. 스레드가 종료된 후에도 식별자는 사용 가능합니다.

속성 name

식별 목적으로만 사용되는 string입니다. 의미론적 의미가 없습니다. 여러 스레드에 동일한 이름을 부여할 수 있습니다. 초기 이름은 생성자에 의해 설정됩니다.

속성 native_id

이 스레드의 네이티브 정수 스레드 ID이며, 시작되지 않은 경우 None입니다. 이것은 음수가 아닌 정수입니다. get_native_id() 함수를 참조하세요. 이는 커널에서 보고한 Thread ID를 나타냅니다.

방법 run


클래스 ContextAwareThreadPoolExecutor

호출자의 컨텍스트로 함수를 실행하는 ThreadPoolExecutor입니다. concurrent.futures.ThreadPoolExecutor 대신 다른 변경 없이 사용할 수 있으며, 실행기 내에서 Weave Call이 예상대로 동작하도록 보장합니다. Weave는 특정 컨텍스트 변수가 설정되어 있어야 하지만(call_context.py 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않으므로 호출 컨텍스트가 손실될 수 있습니다 — 바람직하지 않죠! 이 클래스는 컨텍스트 변수 복사를 자동화하므로 이 실행기를 사용하면 사용자가 기대하는 대로 “바로 작동합니다”. 이 클래스를 사용하지 않고도 다음과 같이 작성하여 같은 효과를 얻을 수 있습니다:

방법 __init__


방법 map


방법 submit


함수 deprecated

함수를 사용 중단으로 표시하고 new_name으로 사용자를 리디렉션하는 데코레이터입니다.

함수 is_colab


함수 is_notebook


함수 log_once

메시지를 한 번 로깅하고, 이후 같은 유형의 메시지는 표시하지 않습니다. 로그를 과도하게 남기지 않고 사용자가 오류 알림을 받도록 하는 데 유용합니다. 같은 오류 메시지가 여러 번 발생할 수 있는 경우에 주로 유용합니다. 예를 들어, op 저장에 실패하면 해당 op를 호출할 때마다 같은 오류가 발생할 가능성이 높습니다. 또는 패치한 이터레이터에 오류가 있으면 결과를 순회할 때마다 같은 오류가 발생할 가능성이 높습니다. 이를 통해 로그를 가득 채우지 않고 사용자에게 오류를 알릴 수 있습니다. 인수:
  • log_method: 메시지를 로깅하는 데 사용할 방법입니다. string 인수를 받을 수 있어야 합니다.
  • message: 로깅할 메시지입니다. 예시:
마지막 수정일 2026년 9월 30일