2014-04-29 72 views
2

我有一些需要調用Python腳本幾千次的C#代碼,每次傳遞一個字符串,然後期待返回一個浮點數。 python腳本可以使用ANY版本的Python運行,所以我不能使用Iron python。建議使用IPC命名管道。我沒有這方面的經驗,並且無法弄清楚如何在C#和Python之間做到這一點。這是一個簡單的過程,還是我正在尋找一個體面的工作量?這是解決我的問題的最好方法嗎?使用IPC與Python和C#進行通信的最簡單方法是什麼?

+0

STDIN/STDOUT是否足夠快?我期望這是一個好方法。 –

+0

這就是我現在使用的。我需要提高速度。 – user3490130

回答

2

使用zeromq。

  • 允許非常輕的消息,而不需要經紀人
  • 可用於多種平臺
  • 可以使用zeromq我的答案在TCP套接字,Unix套接字或過程

這裏內部溝通https://stackoverflow.com/a/23227631/346478

它用於不同Python程序之間的消息傳遞,但在其他平臺之間可以使用完全相同的通信方法。只要保持消息傳遞可交互 - 雙方都必須正確理解內容。你可以玩二進制數據,但很多時候json表示的工作也很快且容易。但是有很多序列化框架,比如結果緩衝區等,這可能會幫助您對結果進行編碼。

+0

這可能是一個很好的解決方案,但可能會有安全隱患,因爲你綁定到一個tcp端口。至少,除非你真的想要通過網絡直播,否則只限於localhost。 – tdelaney

+0

@ user3490130關於速度,準備好真的很快。每秒數以萬計的消息,其中較小的消息往往勝過TCP,因爲它將多個消息管理爲一個TCP數據包(取決於實際使用情況)。 –

+0

完成新手到這個編碼領域。你能簡單地解釋一下c#端需要什麼來實現這個功能嗎? – user3490130

相關問題