一、C调用Python

1.新建一个Python文件,名称为py_multipy.py:

 #import numpy as np
def multiply(a=1,b=2):
print('Function of python called!')
print('a:',a)
print('b:',b)
print('a*b:',a*b)
#print('numpy a*b:',np.multiply(a,b))

2.新建一个C调用文件,名称为call_python.c

 #include <stdio.h>
#include <stdlib.h>
#include <Python.h> int main()
{
Py_Initialize(); if(!Py_IsInitialized())
{
printf("Python init failed!\n");
return -;
} PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')"); PyObject *pDict = NULL;
PyObject *pModule = NULL;
PyObject *pName = NULL;
PyObject *pFunc = NULL;
PyObject *pArgs = NULL; pName = PyString_FromString("py_add");
pModule = PyImport_Import(pName);
if (!pModule)
{
printf("Load py_add.py failed!\n");
getchar();
return -;
} pDict = PyModule_GetDict(pModule);
if(!pDict)
{
printf("Can't find dict in py_add!\n");
return -;
} pFunc = PyDict_GetItemString(pDict,"add");
if(!pFunc || !PyCallable_Check(pFunc))
{
printf("Can't find function!\n");
getchar();
return -;
} pArgs = PyTuple_New(); PyTuple_SetItem(pArgs,,Py_BuildValue("i",));
PyTuple_SetItem(pArgs,,Py_BuildValue("i",)); PyObject_CallObject(pFunc,pArgs); if(pName)
{
Py_DECREF(pName);
} if(pArgs)
{
Py_DECREF(pArgs);
} if(pModule)
{
Py_DECREF(pModule);
} Py_Finalize();
return ; }

3.编译C文件

gcc -I/usr/include/python2.7/ call_python.c -o call_python -L/usr/lib/ -lpython2.7

在当前目录下生成可执行文件call_python

4.执行新生成的文件:./call_python

显示结果如下:

Function of python called!

('a:',111)

('b:',222)

('a*b:',333)

二、Python调用C

1.新建一个pcallc.c

 #include <stdio.h>
#include <pcallc.h> int add(int a,int b)
{
int c= ;
c = a+b;
printf("add c:",c);
return c;
}

2.新建一个pcallc.h

 #ifndef PCALLC_H
#define PCALLC_H int add(); #endif

3.生成动态库:pcallc.so

gcc -o pcallc.so -shared -fPIC pcallc.c

4.新建pcallc.py

 #-*- coding:utf-8 -*-

 import ctypes

 loadso = ctypes.cdll.LoadLibrary
lib= loadso("./pcallc.so")
lib.add(1,2) print("***finish***")

5.运行pcallc.py

python pcallc.py

add c:3

finish!

Tensorflow模型移植Arm之一:C与Python互相调用的更多相关文章

  1. 将训练好的tensorflow模型移植到android应用中

    具体步骤如下: 1.  TFLiteConverter保存模型 修改网络模型代码,将模型通过TFLiteConverter转化成为 TensorFlow Lite FlatBuffer即为.tflit ...

  2. tensorflow初次接触记录,我用python写的tensorflow第一个模型

    tensorflow初次接触记录,我用python写的tensorflow第一个模型 刚用python写的tensorflow机器学习代码,训练60000张手写文字图片,多层神经网络学习拟合17000 ...

  3. [翻译] Tensorflow模型的保存与恢复

    翻译自:http://cv-tricks.com/tensorflow-tutorial/save-restore-tensorflow-models-quick-complete-tutorial/ ...

  4. Tensorflow模型的格式

    转载:https://cloud.tencent.com/developer/article/1009979 tensorflow模型的格式通常支持多种,主要有CheckPoint(*.ckpt).G ...

  5. 移动端目标识别(2)——使用TENSORFLOW LITE将TENSORFLOW模型部署到移动端(SSD)之TF Lite Developer Guide

    TF Lite开发人员指南 目录: 1 选择一个模型 使用一个预训练模型 使用自己的数据集重新训练inception-V3,MovileNet 训练自己的模型 2 转换模型格式 转换tf.GraphD ...

  6. 搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型

    原文地址:搭建 MobileNet-SSD 开发环境并使用 VOC 数据集训练 TensorFlow 模型 0x00 环境 OS: Ubuntu 1810 x64 Anaconda: 4.6.12 P ...

  7. 一份快速完整的Tensorflow模型保存和恢复教程(译)(转载)

    该文章转自https://blog.csdn.net/sinat_34474705/article/details/78995196 我在进行图像识别使用ckpt文件预测的时候,这个文章给我提供了极大 ...

  8. TensorFlow模型保存和加载方法

    TensorFlow模型保存和加载方法 模型保存 import tensorflow as tf w1 = tf.Variable(tf.constant(2.0, shape=[1]), name= ...

  9. 使用tensorflow-serving部署tensorflow模型

    使用docker部署模型的好处在于,避免了与繁琐的环境配置打交道.使用docker,不需要手动安装Python,更不需要安装numpy.tensorflow各种包,直接一个docker就包含了全部.d ...

随机推荐

  1. HTML头信息标签和标题标签

    <html> <!-- 头信息的作用 1. 可以设置网页的标题. 2. 可以通知浏览使用指定的码表解释html页面. --> <head> <meta htt ...

  2. 数据中心网络架构的问题与演进 — Overlay 网络

    目录 文章目录 目录 前文列表 数据中心网络架构演进回顾 Overlay 网络 Overlay 网络的优势 基于 VxLAN Overlay 的 Spine-Leaf 网络架构 参考文章 前文列表 & ...

  3. 八十二:memcached之python操作memcached

    安装:pip install python-memcached 创建链接:mc = memcache.Client(['127.0.0.1:11211'], debug=True) 插入数据:mc.s ...

  4. apicloud 顶部状态栏透明方法

    api.setStatusBarStyle({ style: 'dark', color:'transparent' });

  5. 备份和恢复IMail数据/IMail的服务端口

    1.备份和恢复IMail数据 首先你需要备份它的系统文件.方法是将“\imail”整个目录树复制下来. 其次还需要备份它的注册表.可选“localhost→General→Backup”来复制:或打开 ...

  6. Spark内核源码解析

    1.spark内核架构常用术语 Application:基于spark程序,包含一个driver program(客户端程序)和多个executeor(线程) Driver Progrom:代表着sp ...

  7. Linux后台运行python程序并输出到日志文件

    后台运行python程序并标准输出到文件 现在有test.py程序要后台部署, 里面有输出内容 使用命令: nohup python -u test.py > test.log 2>&am ...

  8. redhat 5 中文乱码

    安装 1.fonts-chinese-3.02-9.6.el5.noarch.rpm. 如果无法安装,则加个--force 2.fonts-ISO8859-2-75dpi-1.0-17.1.noarc ...

  9. 【神经网络与深度学习】【C/C++】C++日志操作开源函数库之Google-glog

    今天想给我的C++项目找一个开源的日志类,用于记录系统日志,结果浪费了半个下午的时间.从网上搜索相关资料,找到以下几个备选方案: 1.log4cplus 下载地址:http://sourceforge ...

  10. [转帖]天津飞腾回应处理器造假 没有采用ARM的内核,内核自主设计

    天津飞腾回应处理器造假没有采用ARM的内核,内核自主设计 ... https://www.expreview.com/63233.html 看了下 同意孟宪瑞老师的关系 飞腾 的确改动了 ARM的架构 ...