Krav: Python-programmering är mycket populärt nuförtiden, används i stor utsträckning inom dataanalys och vetenskaplig forskning, stora modeller, djupinlärning med mera, vissa modellalgoritmer är skrivna i python och kräver .NET för att köra pythonskript, skicka parametrar och få resultat. De onlinebaserade lösningarna är: processexekvering, IronPython, pythonnet och slutligen pythonnet.
pythonnet-Python.NET
Python.NET är ett mjukvarupaket som gör det möjligt för Python-programmerare att integrera .NET Universal Language Runtime (CLR) nästan sömlöst och ger .NET-utvecklare kraftfulla applikationsskriptverktyg. Den tillåter Python-kod att interagera med CLR och kan även användas för att bädda in Python i .NET-applikationer.
Adress:Inloggningen med hyperlänken är synlig.
Förbered Python-miljön
Denna artikel använder python-3.13.2-embed-amd64 som körmiljö, referens:
Python-3.13.2 inbäddningspaket 64-bitars nedladdning:Inloggningen med hyperlänken är synlig.
Skapa en ny .NET 8-konsol
Skapa en ny .NET 8-konsolreferens med följande referens:
Eftersom pythonnet kommer att användaBinärFormatteringklass, kommer följande undantag att kastas under utförandet:
Undantag för ohanterad användning. System.NotSupportedException: BinaryFormatter-serialisering och deserialisering är inaktiverade i denna applikation. SeInloggningen med hyperlänken är synlig.för mer information. För att lösa problemet, redigera .csproj-noden <PropertyGroup> och lägg till följande konfiguration:
Den fullständiga konfigurationen är följande:
Py.GIL() är en viktig funktion i Python.NET biblioteket för att erhålla och släppa Global Interpreter Locks (GILs). GIL är en mekanism i CPython-tolken som säkerställer att endast en tråd exekverar Python-bytekod åt gången. Detta är viktigt i en multitrådad miljö, särskilt om Python- och .NET-kod blandas ihop.
Pythons flytteltyp är faktiskt en dubbelprecisionsflyttil (64 bitar), vilket motsvarar C#:s dubbeltyp.
Exekvera pythonkod direkt
För enkel pythonkod, som kan köras direkt, är koden följande:
Kalla en pythonfunktion
Koden är följande:
Distribuera till Linux-miljön för testning
Tillgängliga för normal drift är testerna följande:
Hänvisning:
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig.
Inloggningen med hyperlänken är synlig. |