gevent如何保证多个协程之间不共享同一个线程局部变量
Posted
技术标签:
【中文标题】gevent如何保证多个协程之间不共享同一个线程局部变量【英文标题】:How does gevent ensure that the same thread-local variables are not shared between multiple coroutines 【发布时间】:2021-11-07 21:30:05 【问题描述】:我有一个Python 2 django项目,是从gunicorn开始的,代码里写了很多threading.currentThread().xxxxxx ='some value'
。
因为协程复用同一个线程,很好奇gevent如何保证协程A(线程1)中创建的currentThread变量不会影响协程B(同线程1强>)。
毕竟代码上的写法是:
import threading
threading.currentThread().xxxxx ='ABCD'
代替
import gevent
gevent.currentCoroutine().xxxxx ='ABCD' (simulate my guess)
感谢您的帮助
【问题讨论】:
【参考方案1】:据我所知并没有。普通的 Gevent 协程在同一个线程中运行 - 如果您在一个协程中修改该线程上的某些内容,那么它也会在另一个协程中被修改。
如果这是关于 gunicorn 的问题,那就另当别论了,下面的答案对此有一些详细的说明 - https://***.com/a/41696500/7970018。
【讨论】:
以上是关于gevent如何保证多个协程之间不共享同一个线程局部变量的主要内容,如果未能解决你的问题,请参考以下文章