因为最近在忙着毕业论文的事情(感伤一下 : 要毕业离开厦大了,呜呜!!!),所以一直没有时间来补充这部分的内容,现在才抽出时间来继续写这个系列的博文。前一篇博文在写的时候没有考虑到一些细节的因素,可能许多读者要把代码运行起会遇到许多的困难,所以这一篇博文将就代码里面的细节和具体环境配置再详细地给大家讲一遍,希望对大家能够提供一定帮助。(ps: 毕业前应该会把这部分的工作整理到GitHub上,敬请期待咯……)
目录
- 环境配置
- 代码细节
- 注意事项
- 总结
环境配置
对于使用C/C++来调用Python代码,优势不言而喻啦,不需要把C/C++代码进行反复编译成动态链接或者静态链接的库,然后使用Python进行调用(ps:反正我们觉得好,哈哈哈)。好了,废话不多说,进入正题。对于环境的配置,我们首先要选取好我们的Python环境,我喜欢用Anaconda2来管理我的Python环境,这个全家桶还是很棒的,尤其对于我这种强迫症患者,喜欢每个Python环境井井有条的,所以只好和Linux的系统Python说拜拜咯,不喜欢把各种深度框架装在一起,在一起,一起, 起……。
这里我选取的是Python环境选取的是Anaconda2中tensorflow框架下的环境,这是因为我要用到tensorflow深度框架,这不多说了,直接上图:
因为用到了numpy里面的PyArrayObject这个对象,所以这里需要加入numpy/core/include路径。
然后下一步我们需要加入python环境变量的lib文件:
最后配置相应的lib文件即可:
这样就配置好了我们的开发环境,下面就是写代码阶段了,由于第一篇博客已经对代码进行了较为详细的介绍,这里只突出一些细节就好了。
代码细节
这是要被调用的Python代码,这一块没什么好说的了,一些简单的矩阵和List的处理。
import numpy as np
class Multiply(object):
def __init__(self, a, b):
self.a = a
self.b = b
def multiply(self):
self.c = self.a * self.b
def ShowResult(self):
print("Result:" + str(self.c))
def FuncCallEntrance():
A = Multiply(5, 3)
A.multiply()
A.ShowResult()
B = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
B = np.asarray(B, dtype='float')
C = [[1], [2], [3]]
C = np.asarray(C, dtype='float')
print B.shape, C.shape
D = np.dot(B, C)
print D
return D
def ArrayListReturn():
ArrList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]