К обсуждениям

Python 3.14.7: проверка общего itertools-итератора в free-threaded режиме

Редакция VOne Технологии

Python 3.14.7: проверка общего itertools-итератора в free-threaded режиме. Практическая инструкция отделяет симптом от соседних причин: синтетический fixture, отрицательный control, таблица наблюдений, критерий остановки и минимальный пакет для поддержки без production-данных.

Ответ и предел изменения

Сначала отделите версию от догадки. Для запроса «как проверить безопасную совместную итерацию itertools в free-threaded Python 3.14.7» подтверждено только следующее изменение: Changelog 3.14.7 фиксирует несколько частей gh-123471: concurrent iteration для ряда itertools приведена к безопасному поведению в free-threaded build. Наблюдаемая боль уже: Два потока читают один zip_longest, accumulate, chain или combinations iterator без внешнего lock, и важен не только crash, но также потеря, дубль или нарушение состава результатов. Ни release note, ни наличие issue не доказывают, что именно этот дефект есть в вашем приложении. До любого действия зафиксируйте исходный результат, происхождение Python и одну ожидаемую развилку; обновление окружения само по себе не считается диагностикой.

Изолированный опыт

Для опыта T22-06 подготовьте отдельную среду и выполните: подтвердить Py_GIL_DISABLED, создать один конечный iterator на уникальных метках, два consumer-потока и собрать результаты в отдельные thread-local списки. Перед запуском запишите version/build mode, доступные backend-возможности и deadline. Входы должны быть синтетическими и минимальными; повтор использует вновь созданные объекты, чтобы cache, locale, GUI state, descriptor или предыдущий exception не склеили ветки. Не включайте токены, рабочие письма, архивы, production PID и абсолютные домашние пути.

Отрицательный контроль

Опровергающий сценарий: получить эталон одним потоком на новом iterator, затем выполнить два независимых iterator параллельно и только потом разделить один объект. Ведите строки в формате «оператор itertools | build mode | входной размер | union результатов | дубли | пропуски | исключения | завершение потоков». Порядок A → B → A2 обязателен: A — control, B — целевой case, A2 — новый control после полного пересоздания fixture. Если A2 не совпадает с A, опыт загрязнён и итог нельзя помечать passed. Пустое поле не равно нулю, а сообщение exception не заменяет его класс и фазу.

Критерий решения

Зелёный критерий заранее определён так: общий iterator завершается без crash и hang, а мультимножество результатов совпадает с однопоточным эталоном для выбранного оператора. Всё остальное делится на not reproduced, environment blocked и failed control. Not reproduced означает только отсутствие симптома в этой конфигурации. Environment blocked запрещает вывод о версии. Failed control переводит расследование к fixture или соседней причине. Сравнение 3.14.6 и 3.14.7 допустимо лишь при идентичном входе, лимитах и runtime capabilities.

Стоп и очистка

Стоп-линия для T22-06: не называть обычную сборку free-threaded и не повышать число потоков после сбоя; остановить опыт при отсутствии Py_GIL_DISABLED или превышении deadline. Дополнительные красные флаги — внешний сетевой запрос, запись вне temp root, приватные данные в stdout, неизвестный descendant process и превышение deadline. Не добивайтесь зелёного результата отключением проверок, catch-all обработчиком, бесконечным retry или ростом лимитов. Очистка удаляет только созданные ресурсы и ещё раз проверяет отсутствие живых child/GUI/stub объектов.

Данные для поддержки

Для поддержки достаточно передать: полный sys._is_gil_enabled результат, оператор и конечные входы, хэши отсортированных результатов, число потоков и exit code. Добавьте label T22-06, московский timestamp и точную формулировку критерия «общий iterator завершается без crash и hang, а мультимножество результатов совпадает с однопоточным эталоном для выбранного оператора». Секреты, IP, токены, hostnames и полные environment dumps удалите. Официальные источники подтверждают изменение «Changelog 3.14.7 фиксирует несколько частей gh-123471: concurrent iteration для ряда itertools приведена к безопасному поведению в free-threaded build.», но не подтверждают массовость запроса или готовность конкретного приложения.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.