首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法修改python中异步函数(coroutine)中的全局变量。

无法修改python中异步函数(coroutine)中的全局变量。
EN

Stack Overflow用户
提问于 2022-06-11 18:21:43
回答 1查看 210关注 0票数 0

我在jupyter笔记本(python 3.6.8)中运行了这段代码。我希望代码作为结果打印2,不知怎么的,它仍然打印1。我想知道为什么。

代码语言:javascript
复制
import asyncio
x = 1

async def func():
    global x
    x = 2
    print(x)

await func()
print(x)

结果是:

我使用的jupyter笔记本环境是:

4.6.3

  • jupyter-notebook : 6.1.4

  • qtconsole : 4.7.7

  • ipython : 7.16.1

  • ipykernel : 5.3.4

  • jupyter client : 6.1.7

  • jupyter实验室: 2.2.9

  • nbconvert : 6.0.7

  • ipywidgets : 7.55.1.2

  • traitlets:.1

  • nbformat : 4.3.3
EN

Stack Overflow用户

发布于 2022-06-11 20:10:04

如果要在IPython协同器中更改全局变量,则必须获取asyncio.Lock

代码语言:javascript
复制
import asyncio

x = 1

async def func():
    global x
    lock = asyncio.Lock()
    await lock.acquire()
    x = 2
    lock.release()

await func()
print(x)  # 2
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72586884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档