是python';s";在;为列表构造线程安全的语言?
是python';s";在;为列表构造线程安全的语言?,python,list,thread-safety,in-operator,Python,List,Thread Safety,In Operator,列表中的obj是否线程安全,而列表中的obj是否可以在其他线程中修改 但是,我在语言结构中找不到任何关于的参考 在python实现方面,我使用CPython,但是其他实现也会对社区有所帮助。我假设您在这里使用的是CPython 如果没有自定义的\uuuuuuuuuuuuuuuuuuuuuuuu包含\uuuuuuuuuu或\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu iter>钩子返回到Python中,或者列表中包含的测试值使用自定义的\uuu
列表中的obj是否线程安全,而列表中的obj是否可以在其他线程中修改
但是,我在
语言结构中找不到任何关于的参考
在python实现方面,我使用CPython,但是其他实现也会对社区有所帮助。我假设您在这里使用的是CPython
如果没有自定义的\uuuuuuuuuuuuuuuuuuuuuuuu包含\uuuuuuuuuu或\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu iter>钩子返回到Python中,或者列表中包含的测试值使用自定义的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
这使得操作完全线程安全;Python线程只在操作码之间切换;GIL(全局解释器锁)通常仅在操作码之间解锁
也就是说,如果在测试安全壳时在自定义C类型上使用中的,该自定义C类型将解锁GIL,那么它将不会是线程安全的
换句话说:
字节码测试中的被锁定,但如果操作员需要调用Python代码(通过\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
,当没有\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,那么该操作就不是线程安全的
对于其他Python实现,线程的处理方式可能有很大的不同。当然,Jython和IronPython没有GIL,您应该假设该操作不是线程安全的。请注意,任何关于线程安全的声明都是特定于实现的(也可能是特定于版本的)。假设除了获取和释放锁之外,没有任何东西是线程安全的,这可能更容易。