Python 3.14t Free-Thread-Kompatibilität mit PolarsPython

Python-Programme
Anonymous
 Python 3.14t Free-Thread-Kompatibilität mit Polars

Post by Anonymous »

Ich habe vor kurzem angefangen, Python3.14t (Free-Threaded-Build) zu verwenden, und hatte viel Spaß. Wenn ich jedoch Polars
installiere

Code: Select all

python3.14t -m pip install polars
Der Prozess blieb in der letzten Zeile des Folgenden hängen

Code: Select all

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) ...
für eine lange Zeit (5–6 Minuten), wobei alle meine CPUs hochfahren. Aber irgendwann hat es durchgehalten.
Jetzt, wo ich renne

Code: Select all

python3.14t
und importieren Sie die Bibliothek

Code: Select all

import polars
Die Konsole forderte Folgendes auf:

Code: Select all

: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.
Also führe ich Python erneut aus als:

Code: Select all

python3.14t -Xgil=0
Ich weiß, dass Polars-Operationen größtenteils bereits Multithreading-fähig sind. Wenn wir es also einfach in verschiedenen Threads verwenden, könnte der Ressourcenkonflikt wahnsinnig sein. Ich vermute, dass dies der Grund dafür ist, dass die Installation so lange gedauert hat und alle meine CPU-Kerne beansprucht hat.
In einigen Szenarien möchte ich jedoch, dass Polars in vielen Threads an vielen verschiedenen Daten arbeitet. In diesen Szenarien, wenn ich voreinstelle

Code: Select all

os.environ["POLARS_MAX_THREADS"] = "1"
Gibt es vor der Parallelisierung (durch die Verwendung eines Thread-Pools wie concurrent.futures.ThreadPoolExecutor
) irgendwelche Fallstricke? Und was noch wichtiger ist:

Code: Select all

python3.14t -Xgil=0
überhaupt sicher für die Verwendung von Polars?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post