0
我正在解決一組耦合ODE並面臨兩個問題:速度和內存存儲。因此,我使用cython_gsl
來創建一個解決我的ODE的模塊。到目前爲止,我只是將數據寫入到.txt
文件中,但我認爲使用PyTables
會更有用。從cython模塊中使用PyTables
因此我在.pyx
文件中定義的東西像
from cython_gsl cimport *
from tables import *
def main (parameters for run):
class vector(IsDescription):
name= StringCol(16) # 16-character String
i = Int32Col() # 32-bit integer
j = Int32Col() # 32-bit integer
k = Int32Col() # 32-bit integer
h5file = tables.openFile("tutorial1.h5", mode = "r", title = "Test file")
group = h5file.createGroup("/", 'spin_vectors',"Spin vectors of the crust and core")
table = h5file.createTable(group, 'shellvector', vector, " ")
... Setup the ODEs ...
while (t < t1):
status = gsl_odeiv_evolve_apply (e, c, s, &sys, &t, t1, &h, y)
if (status != GSL_SUCCESS):
break
#write_file.write("%.16e %.16e %.16e %.16e %.16e %.16e %.16e\n" %(t, y[0], y[1],y[2],y[3], y[4],y[5]))
shell_table.row['i']=y[0]
shell_table.row['j']=y[1]
shell_table.row['k']=y[2]
shell_table.row.append()
shell_table.flush()
然後我用setup.py
文件,該文件輸出(成功)一個.so
文件進行編譯。不幸的是,導入到Ipython後,我得到了錯誤
NameError: Int32
我認爲這是一個PyTables的事情。所以它似乎沒有被正確導入?雖然我認爲這是一個很好的方法來做到這一點,如果任何人有更好的建議,如何處理來自python/cython的數據,我會很高興聽到..谷歌幾乎沒有!