擅长:python、mysql、java
<p>我假设您在谈论Python的CPython实现。在</p>
<p>在CPython中有一个全局解释器锁,这意味着一次只能执行一个Python代码线程。因此,用C编写的代码也将是单线程的,除非它显式地释放全局锁。在</p>
<p>这意味着,如果有多个Python线程同时使用cStringIO,那么不会有任何问题,因为一次只有一次对cStringIO方法的调用是活动的,而cStringIO永远不会释放锁。但是,如果直接从在锁定环境外运行的C代码调用它,则会出现问题。另外,如果你做任何比读或写更复杂的事情,你就会有问题,例如,如果你开始使用<code>seek</code>,因为你的调用可能会以意想不到的方式重叠。在</p>
<p>还请注意,某些方法,如<code>writelines</code>可以从该方法内部调用Python代码,因此在这种情况下,您可以在对<code>writelines</code>的单个调用中交叉获得其他输出。在</p>
<p>大多数标准Python对象都是这样:您可以安全地使用来自多个线程的对象,因为单个操作不会中断,但不会定义事情发生的顺序。在</p>