Я пишу многопоточное приложение на Python и столкнулся с проблемой, когда время ядра резко возрастает. Используя perf
, я вижу, что это действительно спин-блокировка:
54.89% python [kernel.kallsyms] [k] __ticket_spin_lock
Код, вызывающий спин-блокировку, приведен ниже:
for i in range(0, my_uuids_len):
while threading.active_count() >= concurrency:
time.sleep(0.1)
threading.Thread(target=read_benchmark,args=(read_times,my_uuids.pop(),)).start()
counter += 1
concurrency
? - person Leeor   schedule 01.03.2014sleep
внутри одного, очевидно, не очень хорошая идея. Кроме того, спин-блокировки - это низкоуровневая оптимизация производительности, которую вы не должны использовать в своем коде самостоятельно, это для библиотеки, которая реализуетwait/notify
(что вам действительно нужно здесь). - person Voo   schedule 01.03.2014