Please, use myPyByteArray.GetBuffer() and the PyBuffer.Read method to copy from a NumPy array. I created a feature request to make the default conversion mechanism take advantage of PyBuffer some time in the future. Regards, Victor From: Jordan GUILLOT Hi, I’m using Pythonnet to import proprietary python package from Windows Application. When my python package return a large byte array in C# world, the type conversion takes lot of time. To illustrate this long conversion time, I made a simple example:
class MyClass: @staticmethod def get_bytes_from_py(): array = np.arange(0, 720000, dtype=np.uint8) return bytes(array)
static void Main(string[] args) { Runtime.PythonDLL = "c:\\Python38\\python38.dll"; PythonEngine.Initialize(); Stopwatch st = new Stopwatch(); st.Start(); using (Py.GIL()) { dynamic myPackage = Py.Import("mypackage"); dynamic myClass = myPackage.MyClass(); dynamic myPyByteArray = myClass.get_bytes_from_py(); long t0 = st.ElapsedMilliseconds; byte[] myCsharpByteArray = myPyByteArray; long t1 = st.ElapsedMilliseconds; Console.WriteLine("Conversion takes {0}ms", t1-t0); } st.Stop(); }
“Conversion takes 303ms” Is this the right way for this conversion? Environment: Python: v3.8.10 Pythonnet:
Windows 10 Pro .NET framework 4.7.2 Regards, Jordan GUILLOT |
_______________________________________________ PythonNet mailing list -- pythonnet@python.org To unsubscribe send an email to pythonnet-le...@python.org https://mail.python.org/mailman3/lists/pythonnet.python.org/ Member address: arch...@mail-archive.com