Как gevent гарантирует, что одни и те же локальные переменные потока не будут совместно использоваться несколькими короутинами

У меня есть проект Python 2 django, который был начат с gunicorn, и я пишу много threading.currentThread().xxxxxx ='some value' в коде.

Поскольку coroutine повторно использует один и тот же поток, мне интересно, как gevent гарантирует, что переменная currentThread, созданная в coroutine A (Thread 1), не повлияет на coroutine B (same Thread 1).

В конце концов, на коде написано:

import threading
threading.currentThread().xxxxx ='ABCD'

Вместо

import gevent
gevent.currentCoroutine().xxxxx ='ABCD' (simulate my guess)

спасибо за помощь

Насколько я знаю, это не так. Обычные корутины Gevent работают в одном потоке - если вы измените что-то в этом потоке в одной корутине, это будет изменено и в другой корутине

Если это вопрос о gunicorn, то это другой вопрос, и следующий ответ содержит много подробностей об этом - https://stackoverflow.com/a/41696500/7970018.

Вернуться на верх