Совместимость Python 3.14t с свободным потоком и PolarsPython

Программы на Python
Ответить
Anonymous
 Совместимость Python 3.14t с свободным потоком и Polars

Сообщение Anonymous »

Недавно я начал использовать Python3.14t (сборка со свободным потоком) и получил некоторое удовольствие. Однако когда я устанавливаю Polars

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

python3.14t -m pip install polars
Процесс завис на последней строке следующего текста

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

Collecting polars
Using cached polars-1.35.2-py3-none-any.whl.metadata (10 kB)
Collecting polars-runtime-32==1.35.2 (from polars)
Using cached polars_runtime_32-1.35.2.tar.gz (2.7 MB)
Installing build dependencies ... done
Getting requirements to build wheel ... done
Installing backend dependencies ... done
Preparing metadata (pyproject.toml) ... done
Using cached polars-1.35.2-py3-none-any.whl (783 kB)
Building wheels for collected packages: polars-runtime-32
Building wheel for polars-runtime-32 (pyproject.toml) ...
в течение длительного времени (5–6 минут), при этом все мои процессоры заработали. Но в конце концов это удалось.
Теперь, когда я бегу

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

python3.14t
и импортируйте библиотеку

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

import polars
Консоль запросила:

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

:491: RuntimeWarning: The global
interpreter lock (GIL) has been enabled to load module
'_polars_runtime_32._polars_runtime_32', which has not declared
that it can run safely without the GIL. To override this behavior
and keep the GIL disabled (at your own risk), run with
PYTHON_GIL=0 or -Xgil=0.
Поэтому я повторно запускаю Python как:

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

python3.14t -Xgil=0
Я знаю, что операции Polars в большинстве случаев уже являются многопоточными, поэтому, если мы используем их напрямую в разных потоках, конкуренция за ресурсы может быть безумной, и я предполагаю, что именно поэтому установка заняла так много времени и использовала все ядра моего процессора.
Однако в некоторых сценариях я действительно хочу, чтобы Polars работал со многими фрагментами разных данных во многих потоках. В этих сценариях, если я предварительно

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

os.environ["POLARS_MAX_THREADS"] = "1"
перед распараллеливанием (с использованием пула потоков, например concurrent.futures.ThreadPoolExecutor), возникнут ли какие-либо подводные камни? И что еще более важно,

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

python3.14t -Xgil=0
даже безопасно вообще использовать Polars?

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

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

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

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

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

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