Saya memiliki aplikasi Express Node.js, tetapi saya juga memiliki algoritma pembelajaran mesin untuk digunakan dalam Python. Apakah ada cara saya bisa memanggil fungsi Python dari aplikasi Node.js saya untuk memanfaatkan kekuatan perpustakaan pembelajaran mesin?
209
node-python
tampaknya menjadi proyek yang ditinggalkan.Jawaban:
Cara termudah yang saya tahu adalah dengan menggunakan paket "child_process" yang dikemas dengan simpul.
Maka Anda dapat melakukan sesuatu seperti:
Maka yang harus Anda lakukan adalah memastikan bahwa Anda berada
import sys
di skrip python Anda, dan kemudian Anda dapat mengaksesarg1
menggunakansys.argv[1]
,arg2
menggunakansys.argv[2]
, dan sebagainya.Untuk mengirim data kembali ke simpul, lakukan hal berikut dalam skrip python:
Dan kemudian node dapat mendengarkan data menggunakan:
Karena ini memungkinkan beberapa argumen untuk diteruskan ke skrip menggunakan spawn, Anda dapat merestrukturisasi skrip python sehingga salah satu argumen memutuskan fungsi mana yang akan dipanggil, dan argumen lain diteruskan ke fungsi itu, dll.
Semoga ini jelas. Beri tahu saya jika ada sesuatu yang perlu diklarifikasi.
sumber
exec
adalah bahwa ia mengembalikan buffer alih-alih streaming, dan jika data Anda melebihimaxBuffer
pengaturan, yang defaultnya menjadi 200kB, Anda mendapatkan buffer melebihi pengecualian dan proses Anda terbunuh. Karenaspawn
menggunakan stream, ini lebih fleksibel daripadaexec
.Contoh untuk orang-orang yang berasal dari latar belakang Python dan ingin mengintegrasikan model pembelajaran mesin mereka dalam aplikasi Node.js:
Ini menggunakan
child_process
modul inti:Itu tidak memerlukan
sys
modul dalam skrip Python Anda.Di bawah ini adalah cara yang lebih modular untuk melakukan tugas menggunakan
Promise
:sumber
The
python-shell
modul olehextrabacon
adalah cara sederhana untuk menjalankan script Python dari Node.js dengan dasar, tapi efisien antar-proses komunikasi dan penanganan kesalahan yang lebih baik.Instalasi:
npm install python-shell
.Menjalankan skrip Python sederhana:
Menjalankan skrip Python dengan argumen dan opsi:
Untuk dokumentasi lengkap dan kode sumber, periksa https://github.com/extrabacon/python-shell
sumber
Anda sekarang dapat menggunakan pustaka RPC yang mendukung Python dan Javascript seperti zerorpc
Dari halaman depan mereka:
Klien Node.js
Server Python
sumber
Sebagian besar jawaban sebelumnya menyebut keberhasilan janji di atas ("data"), itu bukan cara yang tepat untuk melakukannya karena jika Anda menerima banyak data, Anda hanya akan mendapatkan bagian pertama. Sebaliknya Anda harus melakukannya di acara akhir.
Panggilan:
python:
sumber
Saya berada di simpul 10 dan proses anak
1.0.2
. Data dari python adalah array byte dan harus dikonversi. Hanya contoh cepat membuat permintaan http dengan python.simpul
request.py
ps bukan contoh buat karena modul http node tidak memuat beberapa permintaan saya perlu membuat
sumber
Anda bisa mengambil python, mentranspilasikannya , dan kemudian menyebutnya seolah-olah itu javascript. Saya telah melakukan ini dengan sukses untuk screeps dan bahkan membuatnya berjalan di browser ala brython .
sumber
Ini berhasil untuk saya. Python.exe Anda harus ditambahkan ke variabel path Anda untuk cuplikan kode ini. Juga, pastikan skrip python Anda ada di folder proyek Anda.
sumber