Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

चाइल्ड प्रोसेस स्पॉन () विधि का उपयोग करके Node.js से पायथन स्क्रिप्ट चलाएँ?

NodeJs और Python डेवलपर्स और वेब डिज़ाइनरों के बीच दो मुख्य पसंदीदा भाषाएँ हैं। लेकिन कुछ ऐसे क्षेत्र हैं जहां NodeJs में अजगर की कमी है, संख्यात्मक और वैज्ञानिक गणना (AI, मशीन लर्निंग, डीप लर्निंग आदि) हैं। जबकि अजगर वैज्ञानिक कंप्यूटिंग के साथ काम करने के लिए बहुत सारे पुस्तकालय प्रदान करता है।

सौभाग्य से, हम पृष्ठभूमि में अजगर चलाकर अपने नोडज एप्लिकेशन के भीतर अजगर पुस्तकालयों का उपयोग कर सकते हैं और परिणाम वापस कर सकते हैं।

इसके लिए हम NodeJs की चाइल्ड_प्रोसेस मानक लाइब्रेरी का उपयोग करने जा रहे हैं, ताकि पृष्ठभूमि में एक पाइटन प्रक्रिया उत्पन्न की जा सके, गणना की जा सके और परिणाम को हमारे नोड प्रोग्राम में वापस किया जा सके।

पायथन स्क्रिप्ट

हम एक साधारण पायथन लिपि लिखने जा रहे हैं जो संदेशों को मानक आउटपुट में आउटपुट करती है।

#Import library
import sys, getopt, time
def main(argv):
   argument = ''
   usage = 'usage: myscript.py -f <sometext>'
   # parse incoming arguments
   try:
      opts, args = getopt.getopt(argv,"hf:",["foo="])
   except getopt.GetoptError:
      print(usage)
      sys.exit(2)
   for opt, arg in opts:
      if opt == '-h':
         print(usage)
         sys.exit()
      elif opt in ("-f", "--foo"):
         argument = arg
   # print output
   print("Start : %s" % time.ctime())
   time.sleep( 2 )
   print('Foo is')
   time.sleep( 2 )
   print(argument)
   print("End : %s" % time.ctime())
if __name__ == "__main__":
main(sys.argv[1:])

आउटपुट

>python myscript.py -f "Hello, Python"
Start : Wed Feb 20 07:52:45 2019
Foo is
Hello, Python
End : Wed Feb 20 07:52:49 2019

यदि हम तर्क के साथ चलने की कोशिश करते हैं, तो ऊपर के समान आउटपुट उत्पन्न करेंगे:

>python myscript.py --foo "Hello, Python"
>python myscript.py –h

आउटपुट

usage: myscript.py -f <Hello, Python>

नोडजेएस इंटरेक्शन

हमारी नोडज स्क्रिप्ट पहले पाइथन स्क्रिप्ट को कॉल करके पाइथन स्क्रिप्ट के साथ इंटरैक्ट करेगी, फिर क्लाइंट को स्क्रिप्ट आउटपुट पास करेगी और क्लाइंट में आउटपुट प्रस्तुत करेगी।

तो चलिए एक नोडज स्क्रिप्ट बनाते हैं, जहां हम स्पॉन () विधि का उपयोग करके एक चाइल्ड प्रोसेस बनाने की कोशिश करेंगे।

server.js

const path = require('path')
const {spawn} = require('child_process')
/**
   * Run python myscript, pass in `-u` to not buffer console output
   * @return {ChildProcess}
*/
function runScript(){
   return spawn('python', [
      "-u",
      path.join(__dirname, 'myscript.py'),
     "--foo", "some value for foo",
   ]);
}
const subprocess = runScript()
// print output of script
subprocess.stdout.on('data', (data) => {
   console.log(`data:${data}`);
});
subprocess.stderr.on('data', (data) => {
   console.log(`error:${data}`);
});
subprocess.stderr.on('close', () => {
   console.log("Closed");
});

उपरोक्त स्क्रिप्ट .on ('डेटा', कॉलबैक) के माध्यम से आउटपुट देगी। पाइथन को बफरिंग आउटपुट से रोकने के लिए -f ध्वज का उपयोग करें अन्यथा डेटा ईवेंट हमें निष्पादन के अंत तक प्रोग्राम से प्रिंट() स्टेटमेंट नहीं मिलेगा।

>node server.js
data:Start : Wed Feb 20 10:56:11 2019
data:Foo is
data:some value for foo
data:End : Wed Feb 20 10:56:15 2019
Closed

  1. पायथन में पत्ती से शुरू होने वाला सबसे छोटा तार

    मान लीजिए कि हमारे पास एक बाइनरी ट्री की जड़ है, प्रत्येक नोड में 0 से 25 तक का मान होता है, जो ए से जेड अक्षरों का प्रतिनिधित्व कर रहा है:0 का मान ए का प्रतिनिधित्व करता है, 1 का मान बी का प्रतिनिधित्व करता है , और इसी तरह। हमें शब्दावली की दृष्टि से सबसे छोटी स्ट्रिंग की खोज करनी है जो इस पेड़ के

  1. पायथन में POST विधि का उपयोग करके जानकारी पास करना

    किसी CGI प्रोग्राम को सूचना भेजने का आम तौर पर अधिक विश्वसनीय तरीका POST विधि है। यह जानकारी को जीईटी विधियों के समान ही पैकेज करता है, लेकिन इसे टेक्स्ट स्ट्रिंग के रूप में भेजने के बजाय? यूआरएल में यह इसे एक अलग संदेश के रूप में भेजता है। यह संदेश मानक इनपुट के रूप में CGI स्क्रिप्ट में आता है। उद

  1. पायथन में GET विधि का उपयोग करके सूचना पास करना

    GET विधि पृष्ठ अनुरोध में संलग्न एन्कोडेड उपयोगकर्ता जानकारी भेजती है। पृष्ठ और एन्कोडेड जानकारी को किसके द्वारा अलग किया जाता है? चरित्र इस प्रकार है - https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2 जीईटी विधि ब्राउज़र से वेब सर्वर तक जानकारी पास करने की डिफ़ॉल्ट विधि है और यह एक