> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-dependabot-github-actions-actions-cache-6.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# util

> weave.trace.util용 Python SDK 레퍼런스

export const SourceLink = ({url}) => <a href={url} target="_blank" rel="noopener noreferrer" className="source-link">
    출처
  </a>;

<div id="api-overview">
  # API Overview
</div>

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L105" />

## <kbd>class</kbd> `ContextAwareThread`

호출자의 컨텍스트에서 함수를 실행하는 스레드입니다.

이것은 `threading.Thread`를 드롭인 대체 구현으로, 스레드 내부에서 call이 예상대로 동작하도록 보장합니다. Weave는 특정 contextvars가 설정되어 있어야 하지만(`call&#95;context.py` 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않기 때문에 call 컨텍스트가 사라질 수 있습니다 -- 이는 바람직하지 않습니다! 이 클래스는 contextvar 복사를 자동화하므로, 이 스레드를 사용하면 사용자가 기대하는 대로 "그냥 동작합니다".

이 클래스 없이도 대신 다음과 같이 작성하면 같은 효과를 얻을 수 있습니다:

```python theme={null}
def run_with_context(func, *args, **kwargs):
     context = copy_context()
     def wrapper():
         context.run(func, *args, **kwargs)
     return wrapper

thread = threading.Thread(target=run_with_context(your_func, *args, **kwargs))
thread.start()
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L129" />

### <kbd>방법</kbd> `__init__`

```python theme={null}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

#### <kbd>속성</kbd> daemon

이 스레드가 데몬 스레드인지 여부를 나타내는 불리언 값입니다.

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

데몬 스레드만 남으면 Python 프로그램 전체가 종료됩니다.

***

#### <kbd>속성</kbd> ident

이 스레드의 스레드 식별자이며, 아직 시작되지 않은 경우에는 None입니다.

0이 아닌 정수입니다. `get_ident()` 함수를 참조하세요. 스레드가 종료된 뒤 다른 스레드가 생성되면 스레드 식별자가 재사용될 수 있습니다. 이 식별자는 스레드가 종료된 후에도 계속 사용할 수 있습니다.

***

#### <kbd>속성</kbd> name

식별 용도로만 사용되는 문자열입니다.

특별한 의미는 없습니다. 여러 스레드에 동일한 name을 지정할 수 있습니다. 초기 name은 생성자에서 설정됩니다.

***

#### <kbd>속성</kbd> native\_id

이 스레드의 네이티브 정수형 스레드 ID입니다. 아직 시작되지 않은 경우에는 None입니다.

음수가 아닌 정수입니다. `get_native_id()` 함수를 참조하세요. 커널에서 보고한 스레드 ID를 나타냅니다.

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L133" />

### <kbd>방법</kbd> `run`

```python theme={null}
run() → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L45" />

## <kbd>class</kbd> `ContextAwareThreadPoolExecutor`

호출자의 컨텍스트에서 함수를 실행하는 ThreadPoolExecutor입니다.

이 클래스는 executor 내부에서 Weave calls가 예상대로 동작하도록 보장하는 concurrent.futures.ThreadPoolExecutor의 드롭인 대체 구현입니다. Weave는 특정 contextvars가 설정되어 있어야 하지만(`call&#95;context.py` 참조), 새 스레드는 부모의 컨텍스트를 자동으로 복사하지 않기 때문에 call 컨텍스트가 손실될 수 있습니다 -- 이는 바람직하지 않습니다! 이 클래스는 contextvar 복사를 자동화하므로, 이 executor를 사용하면 사용자가 기대하는 대로 "그냥 작동"합니다.

이 클래스를 사용하지 않아도, 대신 다음과 같이 작성하면 같은 효과를 얻을 수 있습니다:

```python theme={null}
with concurrent.futures.ThreadPoolExecutor() as executor:
     contexts = [copy_context() for _ in range(len(vals))]

     def _wrapped_fn(*args):
         return contexts.pop().run(fn, *args)

     executor.map(_wrapped_fn, vals)
```

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L68" />

### <kbd>방법</kbd> `__init__`

```python theme={null}
__init__(*args: 'Any', **kwargs: 'Any') → None
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L77" />

### <kbd>방법</kbd> `map`

```python theme={null}
map(
    fn: 'Callable',
    *iterables: 'Iterable[Any]',
    timeout: 'float | None' = None,
    chunksize: 'int' = 1
) → Iterator
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L73" />

### <kbd>방법</kbd> `submit`

```python theme={null}
submit(fn: 'Callable', *args: 'Any', **kwargs: 'Any') → Any
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L164" />

### <kbd>함수</kbd> `deprecated`

```python theme={null}
deprecated(new_name: 'str') → Callable[[Callable[P, R]], Callable[P, R]]
```

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

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L137" />

### <kbd>함수</kbd> `is_colab`

```python theme={null}
is_colab()
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L146" />

### <kbd>함수</kbd> `is_notebook`

```python theme={null}
is_notebook() → bool
```

***

<SourceLink url="https://github.com/wandb/weave/blob/v0.52.42/weave/trace/util.py#L21" />

### <kbd>함수</kbd> `log_once`

```python theme={null}
log_once(log_method: 'Callable[[str], None]', message: 'str') → None
```

메시지를 한 번만 기록하고, 이후 같은 유형의 메시지는 출력하지 않습니다. 이렇게 하면 로그를 도배하지 않으면서도 사용자에게 오류를 알릴 수 있습니다.

이는 같은 오류 메시지가 여러 번 발생할 수 있는 경우에 특히 유용합니다. 예를 들어, 어떤 `op`가 저장에 실패하면 그 `op`가 호출될 때마다 같은 문제가 발생할 가능성이 높습니다. 또는 패치된 이터레이터에 오류가 있으면 결과를 순회할 때마다 같은 오류가 발생할 가능성이 높습니다. 이렇게 하면 로그를 불필요하게 쌓지 않으면서도 사용자에게 오류를 알릴 수 있습니다.

**매개변수:**

* <b>`log_method`</b>: 메시지를 기록하는 데 사용할 방법입니다. 문자열 매개변수 하나를 받을 수 있어야 합니다.
* <b>`message`</b>: 기록할 메시지입니다.
  **예시:**

```python theme={null}
log_once(logger.error, "Failed to save op")
```
