在协程中使用全局状态变量?

Posted

技术标签:

【中文标题】在协程中使用全局状态变量?【英文标题】:Using global state variables in coroutines? 【发布时间】:2017-10-20 14:43:01 【问题描述】:

我正在使用 discord.py 库构建一个不和谐机器人 - 因此,所有用户交互都必须在协程中进行,使用 async 定义并使用 await 调用。

我的一个函数需要保存状态变量——计算中使用的时间偏移量,偶尔需要用户手动更新。

我不能在主线程中使用普通的全局变量——协程看不到它们。在多个协程之间保留状态变量的明智设计模式是什么?

【问题讨论】:

【参考方案1】:

也许你可以使用字典。例如:

x = the name of the member:[stored variables]

你可以改变变量:

x[variable u want to change] = variable u want to give it

More about dicts

【讨论】:

【参考方案2】:

您可以创建自己的线程安全类来包装状态并像内存数据存储一样使用它

【讨论】:

这并不能真正回答问题。如果您有其他问题,可以点击 进行提问。要在此问题有新答案时收到通知,您可以follow this question。一旦你有足够的reputation,你也可以add a bounty 来引起对这个问题的更多关注。 - From Review

以上是关于在协程中使用全局状态变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何在协程中发出 GET 请求?

对协程的理解

如何在协程中使用缓动来更改浮点值?

如何在协程中发出GET请求?

Python异步IO

python gevent 协程