<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          沒想到 NodeJS 也能調(diào)用 Python ?

          共 2080字,需瀏覽 5分鐘

           ·

          2021-10-26 11:47

          今天看了一篇文章覺得很有趣,沒想到 NodeJS 也能調(diào)用 Python,眾所周知,Python 語言這幾年紅的不得了,在結(jié)合當(dāng)今流行的 JavaScript ,強強聯(lián)合,給了我們更多想象空間,在一些場景下,可以進行一些嘗試。廢話不多說,我們來看看兩者是怎么結(jié)合進行互相調(diào)用。

          NodeJS 作為后端,僅在需要時調(diào)用 Python

          在某些特殊的場景下,比如復(fù)雜耗時的數(shù)據(jù)處理和運算時,我們可以用 Python 腳本編寫,然后使用 Node 的子進程調(diào)用 ?Python 腳本即可,這樣可以提升效率。如下代碼,我們可以使用 Node.js 的 API child_process.spawn(command[, args][, options]) 進行調(diào)用 Python 腳本:

          const?spawn?=?require('child_process').spawn
          app.get("process_data",?(req,?res)?=>?{
          ????spawn('python3',?['script.py'])
          })

          Python 腳本:

          #?script.py
          doSometing()

          如果我們的 Node 腳本向 Python 腳本傳遞參數(shù),那該怎么傳呢,如下段代碼所示:

          const?spawn?=?require('child_process').spawn
          app.get("process_data",?(req,?res)?=>?{
          ????const?msg?=?"Hello"
          ????spawn('python3',?['script.py',?msg])
          })

          這時我們需要改下 Python 的腳本,接收 NodeJS 傳過的參數(shù)。如下段代碼所示:

          import?sys,?json

          def?main():
          ????msg?=?sys.argv[1]
          ????doSometing(msg)

          if?__name__?==?'__main__':
          ????main()

          如果傳輸 JSON 這樣復(fù)雜的數(shù)據(jù),我們需要改寫 Node 的寫法,以數(shù)據(jù)流的形式傳遞給 Python ,示例代碼如下:

          const?spawn?=?require('child_process').spawn,
          const?py?=?spawn('python3',?['script.py'])
          const?data?=?{
          ????msg:?"Hello"
          }

          py.stdin.write(JSON.stringify(data))?
          //we?have?to?send?data?as?a?string,?so?we?are?using?JSON.stringify
          py.stdin.end()

          接下來我們來改下 Python 腳本,接收 Node 前端傳送的數(shù)據(jù)流,進行下一步的邏輯處理

          import?sys,?json

          def?main():
          ????lines?=?sys.stdin.readlines()
          ????data?=?json.loads(lines)
          ????doSometing(data['msg'])

          if?__name__?==?'__main__':
          ????main()

          Node 除了可以往 Python 傳遞數(shù)據(jù),同時可以接收 Python 傳遞的數(shù)據(jù),接下來我們來改寫 Node 相關(guān)的腳本,示例代碼如下:

          const?spawn?=?require('child_process').spawn
          const?py?=?spawn('python3',?['cscript.py'])

          py.stdout.on('data',?function(res){
          ???let?data?=?JSON.parse(res.toString())
          ???console.log(data)
          })

          最后調(diào)整 Python 腳本,用于向 Node 前端傳送數(shù)據(jù),示例代碼如下:

          import?sys

          #?You?will?have?your?own?implementation?of?get?data.?In?this?case?lets?assume?it?returns?a?dict/json
          res?=?getData()
          print(json.dumps(data))

          sys.stdout.flush()

          今天的文章就分享到這里,是不是很簡單呢,感謝你的閱讀,有了這些示例后,你可以嘗試下在業(yè)務(wù)中進行運用,你會發(fā)現(xiàn) Python + NodeJS 的強大之處,如果你有好的應(yīng)用和想法,別忘記在留言區(qū)分享喲

          參考來源:

          作者:Shuvo
          來源:https://dev.to/0shuvo0/copy-text-to-clipboard-in-jstwo-ways-1pn1

          瀏覽 645
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧欧美日日日 | 国产ts一区 | 国产成人精品无码视频 | 日本黄色视频大全 | 久久成人麻豆影视 |