簡體   English   中英

Python和C++之間最基本的IPC

[英]The most basic IPC between Python and C++

我正在用 C++ 編寫一個 DLL(Windows,MS VS 17),它需要在某個時候調用一個 Python 腳本——它應該讀取一個 json 編碼的字符串,處理它並返回 json 編碼的結果。 不需要異步模式或“光速”,但我需要或多或少的快速響應 - 即最多在 1-5 秒內。 以下是我考慮的方法和評論:

  1. 將字符串作為命令行參數傳遞 顯然,這不是最佳選擇——更不用說字符串長度限制了。
  2. 使用臨時文件 在我的情況下,最好避免這種做法,因為雖然我通常每次啟動都需要運行 Python 部分一次,但啟動次數可能相當大。
  3. 使用 TCP/IP 套接字(用於localhost )/管道 對於這樣的任務來說,兩者似乎都有些矯枉過正——我沒有不斷變化的連續數據流。 此外,在 Windows 中這可能會很痛苦。
  4. 使用共享內存 共享內存將是一個不錯的選擇,但我找不到在 C++ 和 Python 中使用相同段的方法。
  5. 將 Python 部分嵌入到 C++ 中 我在這里有兩個問題:a) Python env 應該安裝在目標機器上,不是嗎? b) python 腳本有一個import ,它導入一個包,從 pip 安裝,不幸的是,我無法避免它。 嵌入時是否有正確的方法來處理導入?

在我的情況下,是否有一種簡單的方法可以在 C++ 和 Python 之間進行互操作?

由於您的目標是 Windows,因此選項 (2) 是最好的,但請使用臨時文件CreateFile(...FILE_ATTRIBUTE_TEMPORARY) 這實際上是共享內存(在操作系統級別,兩者都由虛擬內存管理器管理),但您可以獲得文件語義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM