Блокирует ли жестко заблокированный цикл while GIL?Python

Программы на Python
Ответить
Anonymous
 Блокирует ли жестко заблокированный цикл while GIL?

Сообщение Anonymous »

Код: Выделить всё

def ingestion_worker(write_queue):
try:
curr_thread = threading.current_thread()
while not STOP_EVENT.is_set():
console_logger.info(f"STOP_EVENT is set {STOP_EVENT.is_set()}, running {curr_thread.name}")
tick = write_queue.get()
if tick is None:
continue
else:
with BUFF_LOCK:
m_tick = {
tick['instrument_token'],
datetime.now().stfrtime("%Y-%m-%d %H:%M:%S"),
tick['last_price'],
tick['volume']
}
BUFFER.append(m_tick)
finally:
console_logger.info(f"STOP_EVENT is set {STOP_EVENT.is_set()}, stopping {curr_thread.name}")
Я пытался создать функцию приема, которая получает данные из веб-сокета, поэтому я планирую запустить эту функцию в отдельном потоке. Мой вопрос в том, что, поскольку я запускаю эту функцию в отдельном потоке с жестко заблокированным циклом while, блокирует ли она GIL? то есть мои другие потоки просто ждут вечно?
(Поправьте меня, если я использую неправильный жаргон или терминологию, также, если кто-нибудь может дайте общий совет, как мне это сделать лучше, это было бы очень полезно!)

Подробнее здесь: https://stackoverflow.com/questions/798 ... ck-the-gil
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»