這兩種語言之間的通訊需求比較少見,方法不外乎那些常見的跨程序通訊手段,socket、共享檔案、管道、訊號等,或者利用外部的網路服務輔助。
而如果是處理圖片,則又是另一回事。小則幾十KB,多則幾十MB,在關注效能的情況下,怎麼都比較難做。共享記憶體也許是最高效的方法,但對C#和Python這兩種高階語言來說,跨語言實現共享記憶體,這方案有些偏門。不知道MemoryMappedFile和mmap能不能通。
然而,這個需求的關鍵點,可能不在於通訊手段,而是同步改非同步。如果非同步執行、互不阻塞,可能一個圖片檔案讀兩遍(共享檔案),也不是什麼大問題。即使是用共享記憶體方案,圖片也需要額外寫一次。寫入到共享檔案,相當於記憶體內一次複製操作,只是比寫檔案快,比socket少一次額外的讀操作。並且,也有同步改非同步的問題,寫完得額外通知對面去讀。
如果真的是效能很重要(Performance Critical)的軟體,選擇C#或Python,可能本身就有些問題;而如果同時選兩種,那真是為難自己啊!
這兩種語言之間的通訊需求比較少見,方法不外乎那些常見的跨程序通訊手段,socket、共享檔案、管道、訊號等,或者利用外部的網路服務輔助。
而如果是處理圖片,則又是另一回事。小則幾十KB,多則幾十MB,在關注效能的情況下,怎麼都比較難做。共享記憶體也許是最高效的方法,但對C#和Python這兩種高階語言來說,跨語言實現共享記憶體,這方案有些偏門。不知道MemoryMappedFile和mmap能不能通。
然而,這個需求的關鍵點,可能不在於通訊手段,而是同步改非同步。如果非同步執行、互不阻塞,可能一個圖片檔案讀兩遍(共享檔案),也不是什麼大問題。即使是用共享記憶體方案,圖片也需要額外寫一次。寫入到共享檔案,相當於記憶體內一次複製操作,只是比寫檔案快,比socket少一次額外的讀操作。並且,也有同步改非同步的問題,寫完得額外通知對面去讀。
如果真的是效能很重要(Performance Critical)的軟體,選擇C#或Python,可能本身就有些問題;而如果同時選兩種,那真是為難自己啊!