Software-update: Python 3.10.0

Python logo (75 pix)Python is een objectgeoriënteerde programmeertaal die kan worden gebruikt om eenvoudige tot complexe, platformonafhankelijke applicaties te ontwikkelen. Het is in de jaren negentig ontworpen door Guido van Rossum, die destijds in Amsterdam voor het CWI werkte. Guido was als BDFL betrokken bij de ontwikkeling van Python. Hij heeft daarnaast voor Dropbox gewerkt, ging daarna met pensioen en toen dat niet echt beviel, ging hij aan de slag bij Microsoft. De release notes voor versie 3.10.0 kunnen hieronder worden gevonden.

Python 3.10.0 is available

On behalf of the Python development community and the Python 3.10 release team, I’m pleased to announce the availability of Python 3.10.0. Python 3.10.0 is the newest major release of the Python programming language, and it contains many new features and optimizations.

Major new features of the 3.10 series, compared to 3.9

Among the new major new features and changes so far:

  • PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
  • PEP 604 – Allow writing union types as X | Y
  • PEP 612 – Parameter Specification Variables
  • PEP 626 – Precise line numbers for debugging and other tools.
  • PEP 618 – Add Optional Length-Checking To zip.
  • bpo-12782: Parenthesized context managers are now officially allowed.
  • PEP 632 – Deprecate distutils module.
  • PEP 613 – Explicit Type Aliases
  • PEP 634 – Structural Pattern Matching: Specification
  • PEP 635 – Structural Pattern Matching: Motivation and Rationale
  • PEP 636 – Structural Pattern Matching: Tutorial
  • PEP 644 – Require OpenSSL 1.1.1 or newer
  • PEP 624 – Remove Py_UNICODE encoder APIs
  • PEP 597 – Add optional EncodingWarning

Python

Versienummer 3.10.0
Releasestatus Final
Besturingssystemen Linux, BSD, macOS, Solaris, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019, Windows 11
Website Python Insider
Download https://www.python.org/downloads/
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Bart van Klaveren

Downloads en Best Buy Guide

05-10-2021 • 12:17

7

Bron: Python Insider

Reacties (7)

7
7
7
0
0
0
Wijzig sortering
Python is leuk, maar ben na PyPy overgestapt op GOlang.
Kwa syntax makkelijker te gebruiken, en de blokken/commenting out werkt iets beter, aangezien indentations echt frustrerend werkt als je wat moet out-commenten.
Gelukkig heeft Jetbrains wel wat eenvoudige tools om indentations te fixen, maar werkt nog steeds onhandig naar mijn mening.

Wel goed om te zien dat Python nog goed onderhouden wordt ;)
Als je voor performance wilt gaan, schuif dan over naar PyPy, vooral de uitvoering van taken omtrent geheugen en andere constant gebruikte werkzaamheden werken vlugger in PyPy dan in standaard Python. Vooral multi-threading is in standaard Python niet lekker vanwege GIL.

[Reactie gewijzigd door Power2All op 24 juli 2024 03:19]

Pypy heeft toch net zo goed een GIL? Wat is er dan anders aan wat bijvoorbeeld threading wel 'lekker' laat werken?
Pypy heeft toch net zo goed een GIL? Wat is er dan anders aan wat bijvoorbeeld threading wel 'lekker' laat werken?
Er is een PyPy versie zonder GIL, of je moet gebruik gaan maken van IronPython of JPython.
Ook is er een implementatie (3rd party) gemaakt om channels toe te passen in Python. Dit moet ervoor zorgen dat memory objecten niet "gedeelt" wordt, maar dat je memory blocken uitwisseld die binnen een eigen thread blijft, en channels puur gebruikt worden voor input/output handelingen, waardoor geheugen objecten niet gaan clonen, wat veel resources (zie geheugen) vereist. Dit is ook van toepassing binnen GO.
Note that there was work to support a Software Transactional Memory (STM) version of PyPy. This should give an alternative PyPy which works without a GIL, while at the same time continuing to give the Python programmer the complete illusion of having one. This work is currently a bit stalled because of its own technical difficulties.
STM is dus nooit afgemaakt, maar PyPy heeft iets betere multi-core threading support dan CPython, dit omdat ik deze nodig had voor een mini webserver die heel veel connecties moest behandelen, threaded. In CPython werd hier maar 1 of 2 cores toegepast, en de rest deed niks, maar in PyPy werd dit wel correct door alle cores behandeld, maar GIL is nog steeds van toepassing, wat de reden voor mij was om naar GO te gaan, die threading en geheugen uitwisseling beter uitgewerkt hadden.

[Reactie gewijzigd door Power2All op 24 juli 2024 03:19]

Waarom kies je dan niet voor multiprocessing net als wat de standaard WSGI implementaties zoals gunicorn en uwsgi ook doen. Waarbij de threads enkel de optie bieden om I/O blocking the handlen maar verder ondergeschikt zijn. Aangezien webrequests toch geen inter-thread communicatie hoeven is het ook niet erg om die in subprocessen te draaien. En zelfs al moet je het geheel zelf implementeren, waarom dan geen asyncio of een voorlopend framework als Tornado of Twisted? Ik vind het zo raar om helemaal het pad af te wandelen naar een minder onprettige multithreader terwijl er legio andere, snellere opties zijn en die gewoon in CPython gebruikt kunnen worden.

[Reactie gewijzigd door The Third Man op 24 juli 2024 03:19]

Tornado was ik voorheen een grote fan van.
Helaas merkte ik op dat GO een veel hogere performance biedt als het komt op threading en vooral geheugen handelingen, zodoende.
CPython kon het aantal connecties niet aan, tegenover PyPy met dezelfde library (Tornado).
GO daarna getest met een simpel test scriptje, blaasde Torando eruit (ook met PyPy), en vanwege dit ben ik overgestapt, en de syntax van GO is heel fijn, aangezien het lijkt op PHP bijna, en aangezien ik veel programmeer in PHP was dus GO een logische switch.

De code die ik gebruik zit tussen de 750k a 3.5m connecties per 5 minuten te behandelen, en dan wil je alles zo snel mogelijk behandeld hebben, wat in GO toch een stukken sneller gaat.

[Reactie gewijzigd door Power2All op 24 juli 2024 03:19]

Hele blokken uit commentarieren zonder gedoe met indentation in een Jetbrains omgeving gaat heel gemakkelijk met [Control] + [ / ] of op Mac met [Command] + [ / ] ;)
Zou je denken, werkt niet altijd goed.
Sommige code wat erachter komt kan stuk gaan.

Op dit item kan niet meer gereageerd worden.