Я читал о GIL, и он никогда не задавался, если это включает в себя основной поток или нет (я так полагаю). Причина, о которой я прошу, заключается в том, что у меня есть программа с настройками потоков, которые изменяют словарь. Основной поток добавляет/удаляет на основе ввода проигрывателя, в то время как поток выполняет цикл обновления данных и изменения данных.Python threading и GIL
Однако в некоторых случаях поток может перебирать ключи словаря, где их можно было бы удалить. Если есть так называемый GIL, и они запускаются последовательно, почему я получаю dict измененные ошибки? Если только один предполагается запустить одновременно, то технически это не должно происходить.
Может ли кто-нибудь пролить свет на такую вещь? Спасибо.
Как правило, потоки Python имеют смысл только для потоков, связанных с I/O. Если вам требуется согласованность доступа к структурам данных параллельно, вам нужна явная блокировка. Если вам нужен параллелизм, связанный с процессором, обычно вам нужно использовать что-то совершенно другое. – 9000