我有一個python腳本和一個C程序(我寫了他們兩個,所以我有源代碼)。 我需要從多次調用C程序的python腳本傳遞大量數據。現在我讓用戶選擇將它們傳遞給ascii文件還是二進制文件,但兩者都非常緩慢且無用(我的意思是,如果要存儲數據,文件是有用的,但是我在最後刪除這些文件劇本)。 os.system不起作用,參數太多。 (C程序也使用文件將數據返回給python,但是這是更少的數據)將許多數據從Python傳遞到C程序
我想知道我可以用什麼來快速交換數據。將文件寫入RAM磁盤?如果是這樣,我該怎麼做?
我聽說可以使用ctypes從dll調用函數,但不知道如何將我的程序編譯爲dll(我在win 7 64上使用wxdevC++)。 或包裝它,但仍不知道它是否可以工作,如果它是有效的..
有人可以告訴我我怎麼能做到這一點?
(該數據是3D網格的頂點)
編輯: 也許更多的相關信息可能會有幫助。我在另一個程序(blender(開源))中運行python腳本,並且因爲它在一個循環中被調用多次(通常超過500次)。該腳本將頂點信息(1 int index和3 float coords)發送給程序,程序應該返回許多頂點(只有int索引,因爲我可以用python找到相應的頂點)。所以這不是交互式的,它更像是一個函數(但它是用C寫的)。腳本+ C程序(這是攪拌機的附件),我寫的應該是跨平臺的,因爲它將被重新分配(我會給源代碼和編譯的程序)。也許這個筆記可以提供幫助:程序實際上是用C語言編寫的,從python中我可以知道包含頂點數據的結構在內存中的地址。如果只有我知道如何做到這一點,應該更好地傳遞給C程序一個地址,並從那裏找到所有其他頂點(存儲在列表中)。但據我所知,我無法訪問另一個程序的內存空間,並且我不知道是否使用管道調用程序或任何初始化新線程或在腳本內部運行(實際運行Blender的線程) PS:here the source和這裏(3)應該是結構定義
(3):攪拌機/源/攪拌機/ makesdna/DNA_meshdata_types.h
,我可以改變我想要的。因此,用管道溝通東西就像寫在標準輸入中一樣。 – 2011-02-10 21:18:22