擅长:python、mysql、java
<p>假设您的用例是使用python<code>thread.local</code>将线程全局变量存储在多线程应用程序中。在</p>
<p>例如,您将django<code>request</code>全局存储在<code>thread.local</code>中</p>
<ul>
<li>您的所有代码都可以访问当前(并且正确)<code>request</code>实例</li>
<li>它可以工作,<strong>因为每个django HTTP请求都在它自己的python线程中处理</strong></li>
</ul>
<p>不,想象一下,在asyncio中,HTTP请求作为在同一python线程中执行的非阻塞代码来处理。在</p>
<ul>
<li>存储在<code>thread.local</code>中的HTTP请求不起作用,因为多个并发请求在同一个python线程中被处理</li>
<li>结果是,<strong>您重写了相同的<code>thread.local</code>变量</strong>,所有代码都可以访问最新的(不正确的)<code>request</code>实例</li>
</ul>
<p>在本例中,您将使用<code>ContextVars</code>,它被设计成在同一个python线程中运行的非阻塞并发作业中用于此用例。在</p>