Одно из применений - убедиться, что операции выполняются атомарно, например:
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)
Другим вариантом использования будет настройка вашего кода, особенно когда вы сталкиваетесь с эффектом конвоя (или любым граничным случаем, когда новый GIL дает плохую производительность). Возможно (просто возможно) изменение интервала переключения контекста может дать вам большую скорость.
Отказ от ответственности: Первый упомянутый выше метод - это dark magic , и он совершенно не рекомендуется (в этом случае предпочтительны threading.Lock
-лики). В общем, я не думаю, что изменение интервала переключения контекста потока является чем-то, что нужно делать в обычных условиях. Я перефразирую то, что Тим Питерс уже сказал о метаклассах: changing thread context switch interval is deeper magic than 99% of people are going to need
.