---
title: 函数：set_context
description: "| 产品 | 是否支持 |"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/aclpythondevg_01_0074.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/aclpythondevg_01_0074.html
indexId: e06e1b847d053eb7555df4212e1a915ecb20a2eaa642712a61da4af8b619516971
---
# 函数：set_context

#### 产品支持情况

| 产品 | 是否支持 |
| --- | --- |
| Atlas 350 加速卡 | √ |
| Atlas A3 训练系列产品 / Atlas A3 推理系列产品 | √ |
| Atlas A2 训练系列产品 / Atlas A2 推理系列产品 | √ |
| Atlas 训练系列产品 | √ |
| Atlas 推理系列产品 | √ |
| Atlas 200I/500 A2 推理产品 | √ |


#### 功能说明

设置线程的Context。


#### 函数原型

- C函数原型
  1 aclError aclrtSetCurrentContext(aclrtContext context)

- python函数
  1 ret = acl.rt.set_context(context)


#### 参数说明

| 参数名 | 说明 |
| --- | --- |
| context | int，线程当前的Context对象指针地址。 |


#### 返回值说明

| 返回值 | 说明 |
| --- | --- |
| ret | int，错误码，返回0表示成功，返回其它值表示失败。 |


#### 约束说明

- 支持以下场景：

  - 如果在某线程（例如：thread1）中调用    acl.rt.create_context
接口显式创建一个Context（例如：ctx1），则可以不调用acl.rt.set_context接口指定该线程的Context，系统默认将ctx1作为thread1的Context。
  - 如果没有调用    acl.rt.create_context
接口显式创建Context，则系统将默认Context作为线程的Context，此时，不能通过    acl.rt.destroy_context
接口来释放默认Context。
  - 如果多次调用acl.rt.set_context接口设置线程的Context，以最后一次为准。
- 若给线程设置的Context所对应的Device已经被复位，则不能将该Context设置为线程的Context，否则会导致业务异常。
- 推荐在某一线程中创建的Context，在该线程中使用。若在线程A中调用  acl.rt.create_context
接口创建Context，在线程B中使用该Context，则需由用户自行保证两个线程中同一个Context下同一个Stream中任务执行的顺序。
