컨텍스트 변수 객체

참고

버전 3.7.1에서 변경:

파이썬 3.7.1에서 모든 컨텍스트 변수 C API의 서명이 PyContext, PyContextVarPyContextToken 대신 PyObject 포인터를 사용하도록 변경되었습니다, 예를 들어:

// in 3.7.0:
PyContext *PyContext_New(void);

// in 3.7.1+:
PyObject *PyContext_New(void);

자세한 내용은 bpo-34762를 참조하십시오.

버전 3.7에 추가.

이 절에서는 contextvars 모듈을 위한 공용 C API에 대해 자세히 설명합니다.

PyContext

contextvars.Context 객체를 나타내는 데 사용되는 C 구조체.

PyContextVar

contextvars.ContextVar 객체를 나타내는 데 사용되는 C 구조체.

PyContextToken

contextvars.Token 객체를 나타내는 데 사용되는 C 구조체.

PyTypeObject PyContext_Type

context 형을 나타내는 형 객체.

PyTypeObject PyContextVar_Type

컨텍스트 변수 형을 나타내는 형 객체.

PyTypeObject PyContextToken_Type

컨텍스트 변수 토큰 형을 나타내는 형 객체.

형 검사 매크로:

int PyContext_CheckExact(PyObject *o)

Return true if o is of type PyContext_Type. o must not be NULL. This function always succeeds.

int PyContextVar_CheckExact(PyObject *o)

Return true if o is of type PyContextVar_Type. o must not be NULL. This function always succeeds.

int PyContextToken_CheckExact(PyObject *o)

Return true if o is of type PyContextToken_Type. o must not be NULL. This function always succeeds.

컨텍스트 객체 관리 함수:

PyObject *PyContext_New(void)
Return value: New reference.

새로운 빈 컨텍스트 객체를 만듭니다. 에러가 발생하면 NULL를 반환합니다.

PyObject *PyContext_Copy(PyObject *ctx)
Return value: New reference.

전달된 ctx 컨텍스트 객체의 얕은 복사본을 만듭니다. 에러가 발생하면 NULL을 반환합니다.

PyObject *PyContext_CopyCurrent(void)
Return value: New reference.

현재 스레드 컨텍스트의 얕은 복사본을 만듭니다. 에러가 발생하면 NULL을 반환합니다.

int PyContext_Enter(PyObject *ctx)

현재 스레드의 현재 컨텍스트로 ctx를 설정합니다. 성공 시 0을 반환하고, 에러 시 -1을 반환합니다.

int PyContext_Exit(PyObject *ctx)

ctx 컨텍스트를 비활성화하고 이전 컨텍스트를 현재 스레드의 현재 컨텍스트로 복원합니다. 성공 시 0을 반환하고, 에러 시 -1을 반환합니다.

int PyContext_ClearFreeList()

컨텍스트 변수 자유 목록을 지웁니다. 해제된 총 항목 수를 반환합니다. 이 함수는 항상 성공합니다.

컨텍스트 변수 함수:

PyObject *PyContextVar_New(const char *name, PyObject *def)
Return value: New reference.

ContextVar 객체를 만듭니다. name 매개 변수는 인트로스펙션과 디버그 목적으로 사용됩니다. def 매개 변수는 선택적으로 컨텍스트 변수의 기본값을 지정할 수 있습니다. 에러가 발생하면, 이 함수는 NULL을 반환합니다.

int PyContextVar_Get(PyObject *var, PyObject *default_value, PyObject **value)

컨텍스트 변수의 값을 가져옵니다. 조회하는 동안 에러가 발생하면 -1을 반환하고, 값이 있는지와 상관없이 에러가 발생하지 않으면 0을 반환합니다.

컨텍스트 변수가 발견되면, value는 그것을 가리키는 포인터가 됩니다. 컨텍스트 변수가 발견되지 않으면, value는 다음을 가리 킵니다:

  • default_value, NULL이 아니면;

  • var의 기본값, NULL이 아니면;

  • NULL

값이 발견되면, 이 함수는 그것에 대한 새 참조를 만듭니다.

PyObject *PyContextVar_Set(PyObject *var, PyObject *value)
Return value: New reference.

현재 컨텍스트에서 var의 값을 value로 설정합니다. PyObject 객체에 대한 포인터를 반환하거나, 에러가 발생하면 NULL을 반환합니다.

int PyContextVar_Reset(PyObject *var, PyObject *token)

var 컨텍스트 변수의 상태를 token을 반환한 PyContextVar_Set() 호출 전의 상태로 재설정합니다. 이 함수는 성공 시 0을 반환하고, 에러 시 -1을 반환합니다.