Python 3.2引入了Antoine Pitrou设计的新GIL实现,其中提供了函数sys.setswitchinterval
。
何时更改此设置会有用?为什么?
Python 3.2引入了Antoine Pitrou设计的新GIL实现,其中提供了函数sys.setswitchinterval
。
何时更改此设置会有用?为什么?
其中一个用途是确保操作运行原子性,例如:
sw_interval = sys.getswitchinterval()
try:
# Setting the switch interval to a very big number to make sure that their will be no
# thread context switching while running the operations that came after.
sys.setswitchinterval(sys.maxint)
# Expressions run here will be atomic ....
finally:
sys.setswitchinterval(sw_interval)
threading.Lock
的方法更可取)。总的来说,我认为在正常情况下不应该改变线程上下文切换间隔。我将引用Tim Peters关于元类的话来概括:“改变线程上下文切换间隔比99%的人需要的魔法更深奥”。