Vereisten: Python-programmeren is tegenwoordig erg populair, veel gebruikt in data-analyse en wetenschappelijk onderzoek, grote modellen, deep learning, enzovoort; sommige modelalgoritmen zijn in Python geschreven, moeten .NET gebruiken om python-scripts uit te voeren, parameters door te geven en resultaten te verkrijgen. De online oplossingen zijn: procesuitvoering, IronPython, pythonnet en tenslotte pythonnet.
pythonnet-Python.NET
Python.NET is een softwarepakket dat Python-programmeurs in staat stelt de .NET Universal Language Runtime (CLR) vrijwel naadloos te integreren en .NET-ontwikkelaars krachtige applicatiescriptingtools biedt. Het maakt het mogelijk dat Python-code met de CLR kan interageren en ook gebruikt worden om Python in .NET-applicaties te integreren.
Adres:De hyperlink-login is zichtbaar.
Bereid de Python-omgeving voor
Dit artikel gebruikt python-3.13.2-embed-amd64 als de running environment, referentie:
Python-3.13.2 embed-pakket 64-bits download:De hyperlink-login is zichtbaar.
Maak een nieuwe .NET 8-console
Maak een nieuwe .NET 8-consolereferentie aan met de volgende referentie:
Omdat pythonnet zal gebruikenBinairFormatterklasse, wordt de volgende uitzondering gegooid tijdens de uitvoering:
Onbehandelde uitzondering. System.NotSupportedException: BinaryFormatter-serialisatie en deserialisatie zijn uitgeschakeld binnen deze applicatie. ZienDe hyperlink-login is zichtbaar.voor meer informatie. Om het probleem op te lossen, bewerk je de .csproj-node <PropertyGroup> en voeg je de volgende configuratie toe:
De volledige configuratie is als volgt:
Py.GIL() is een belangrijke functie in de Python.NET bibliotheek voor het verkrijgen en vrijgeven van Global Interpreter Locks (GILs). GIL is een mechanisme in de CPython-interpreter dat ervoor zorgt dat slechts één thread tegelijk Python-bytecode uitvoert. Dit is belangrijk in een multithreaded omgeving, vooral als Python en .NET-code door elkaar worden gemengd.
Het float-type van Python is eigenlijk een double-precision float (64 bits), wat overeenkomt met het dubbele type van C#.
Voer Python-code direct uit
Voor eenvoudige pythoncode, die direct kan worden uitgevoerd, is de code als volgt:
Roep een pythonfunctie aan
De code is als volgt:
Deploy naar de Linux-omgeving voor testen
Beschikbaar voor normaal gebruik, zijn de tests als volgt:
Referentie:
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar.
De hyperlink-login is zichtbaar. |