Jika Anda ingin mendasarkan kode Anda pada kerangka .NET, saya sangat merekomendasikan IronPython vs Python.NET. IronPython cukup banyak asli .NET - jadi itu hanya berfungsi dengan baik ketika mengintegrasikan dengan bahasa .NET lainnya.
Python.NET bagus jika Anda hanya ingin mengintegrasikan satu atau dua komponen dari .NET ke dalam aplikasi python standar.
Ada perbedaan mencolok saat menggunakan IronPython - tetapi kebanyakan tidak terlalu kentara. Python.NET menggunakan runtime CPython standar, jadi halaman Wiki ini adalah diskusi yang relevan tentang perbedaan antara dua implementasi. Perbedaan terbesar terjadi pada biaya pengecualian - jadi beberapa pustaka python standar tidak berkinerja baik di IronPython karena implementasinya.
Sementara setuju dengan jawaban yang diberikan oleh Reed Copsey dan Alex Martelli, saya ingin menunjukkan satu perbedaan lebih lanjut - Global Interpreter Lock (GIL). Sementara IronPython tidak memiliki batasan GIL, CPython memilikinya - jadi akan tampak bahwa untuk aplikasi-aplikasi di mana GIL adalah penghambat, katakanlah dalam skenario multicore tertentu, IronPython memiliki keunggulan dibandingkan Python.NET.
Dari dokumentasi Python.NET:
Masalah lainnya adalah dukungan IDE. CPython mungkin memiliki dukungan IDE yang lebih baik saat ini daripada IronPython - jadi ini mungkin menjadi faktor dalam memilih salah satu dari yang lain.
sumber
Sebagian besar pustaka ilmiah dan numerik Python yang mengandalkan CPython C-API (numpy, scipy, matplotlib, pandas, cython, dll.) Sebagian besar bekerja di bawah CPython, jadi dalam hal ini taruhan terbaik Anda adalah pythonnet (nama lain - Python.NET dan Python untuk .NET). Hal yang sama juga berlaku untuk binding CPython GUI seperti WxWidgets, PyQt / PySide, GTK, Kivy, dll., Meskipun pythonnet dan IronPython dapat menggunakan WPF dan WinForms.
Dan akhirnya IronPython belum sepenuhnya mendukung Python 3.
sumber
IronPython adalah ".NET-native" - jadi akan lebih disukai jika Anda ingin mengintegrasikan sepenuhnya kode Python Anda dengan .NET sepenuhnya; Python.NET bekerja dengan Classic Python, jadi ini memungkinkan Anda menjaga "lengan panjang" kode Python Anda dari .NET sesuai. (Perhatikan bahwa dengan kode ini Anda sebenarnya dapat menggunakan ekstensi yang ditulis untuk CPython dari kode IronPython Anda, jadi itu bukan kondisi yang membedakan lagi).
sumber
IronPython berasal dari Microsoft, jadi saya akan menggunakan keberanian saya dan menggunakan yang pertama karena Anda harus berasumsi itu akan bermain lebih baik dengan teknologi MSFT lainnya.
sumber
Adapun tahun 2016.
Di perusahaan saya, kami menggunakan IronPython, tetapi kami tidak puas dengan kinerjanya (kebanyakan penggunaan memori - pengumpul sampah terlalu lambat) jadi kami memutuskan untuk beralih ke Python standar dan mengintegrasikannya dengan .Net menggunakan Zeroce-s ICE.
sumber
IronPython, saat ini, tidak mendukung Python 3.6 (hanya 2.7)
dari IronPython 3 "Build IronPython 3 belum tersedia."
sumber
Ironpython seperti C # pada gilirannya bergantung pada pustaka prebuilt statis sementara tidak seperti C # adalah bahasa dinamis.
Cpython seperti C ++ seperti Ironpython adalah bahasa dinamis dan memiliki akses ke pustaka dinamis yang pada gilirannya diterjemahkan menjadi dipaksa untuk menulis semuanya.
Ironpython lebih cepat dari C # di area tertentu tetapi tidak lebih cepat dari Cpython, namun Anda dapat menautkan Ironpython ke bahasa apa pun sehingga mengatasi masalah yang akan datang tetapi sekali lagi Anda dapat melakukan hal yang sama dengan Cpython.
Bahasa yang lucu, sederhana, dan kuat apa pun yang Anda pilih!
sumber
Iron Python pada dasarnya adalah Python 2.7 dengan dukungan .net terintegrasi, ia mungkin tidak akan pernah mendukung Python 3. Ia kehilangan pustaka C dan Python, namun di sisi twist memiliki akses ke .net dan dapat diperpanjang dengan C #. Jadi jika Anda sudah menggunakan C # maka Iron Python adalah bonus.
sumber
Saya lebih suka Python untuk .NET, karena IronPython dikompilasi sebagai kode yang dikelola, yang dapat dengan mudah didekompilasi (yang paling saya benci), tetapi dengan py2exe atau pyinstaller Anda dapat mengkompilasi Python dengan modul NET sebagai aplikasi yang tidak dikelola.
sumber