DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 541 评论 :: 1614万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

01 2023 档案

摘要:环境: 关键词:ubuntu 16.04 LTS;gcc 5.4;Python3.5;多版本Python View Code 实际上这个问题的发现是在一个我并不完全掌握的环境上发现的,当时环境也是ubuntu 16.04 LTS,gcc 5.4,但是装了anaconda3,而且还把系统默认pytho 阅读全文
posted @ 2023-01-31 15:21 DoubleLi 阅读(325) 评论(0) 推荐(0) 编辑

摘要:之前尝试在so库内调用getpwd()来获取当前路径,但是实际上获取到的是调用so库的可执行程序的所在路径,因此改用dladdr()做一些间接处理来获取。 #include <dlfcn.h>#include <string.h>#include <string>char* GetModuleCur 阅读全文
posted @ 2023-01-31 14:38 DoubleLi 阅读(900) 评论(0) 推荐(0) 编辑

摘要:python包/模块,专栏总目录: 1.python自定义模块 2.python模块调用顺序 3.python logging模块 4.python定义跨模块的全局变量 1、logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存 阅读全文
posted @ 2023-01-31 14:03 DoubleLi 阅读(393) 评论(0) 推荐(0) 编辑

摘要:python3执行某一个程序时,报Segmentation fault (core dumped)错,但没有告知到底哪里出错,无法查问题 同时在根目录下生成core文件,典型的可以用gdb进行调试。这里用另外一个方法调试。在主程序最开始加入两行代码: import faulthandler faul 阅读全文
posted @ 2023-01-31 13:57 DoubleLi 阅读(3484) 评论(0) 推荐(0) 编辑

摘要:问题描述: linux系统直接运行代码,提示Segmentation fault (core dumped) 补充:在pycharm之类的IDE中可以正常运行或debug,命令行运行就不行。(使用conda虚拟环境,所以不是环境问题 问题解决 最后分析发现是有部分import的包在当前版本中没有,或 阅读全文
posted @ 2023-01-31 13:55 DoubleLi 阅读(1321) 评论(0) 推荐(0) 编辑

摘要:问题如题描述,python 运行过程中直接导致python 解释器崩溃(不是异常,直接崩溃),下面简叙一下debug过程: google查询结果显示这种情况多数是因为Python里的C扩展导致(访问了非法内存区域,可能和C自身内存管理机制有关),而且可以用gdb进行debug(因为Python崩溃, 阅读全文
posted @ 2023-01-31 13:52 DoubleLi 阅读(361) 评论(0) 推荐(0) 编辑

摘要:目录 1.首先编写python调用C++的demo 2.gdb调试python程序 3.全速运行程序 4.查看堆栈信息 当我们用Python调用C++的库,并且C++库中存在段错误崩溃时,首先想到的还是用gdb进行调试,具体使用方法如下: 使用该方法的前提是编译C++库的时候要加上-g选项,使编译出 阅读全文
posted @ 2023-01-30 17:56 DoubleLi 阅读(647) 评论(0) 推荐(0) 编辑

摘要:大多数常规 Python 调试器支持仅调试 Python 代码。 但是,实际上,Python 结合 C 或 C++ 一起使用时需要高性能或直接调用平台 API 的能力。 (有关演练,请参阅创建适用于 Python 的 C++ 扩展。) Visual Studio 为 Python 和本机 C/C++ 阅读全文
posted @ 2023-01-30 17:54 DoubleLi 阅读(695) 评论(0) 推荐(0) 编辑

摘要:python可以利用SO的方式去调用C++中的函数,但是需要一种调试方案来进行python和C++的联合调试,效果是直接在c++代码中打断点,然后python在进行c++so调用的时候,直接进入到断点处: testlib.cpp #include using namespacestd; PyObje 阅读全文
posted @ 2023-01-30 17:53 DoubleLi 阅读(369) 评论(0) 推荐(0) 编辑

摘要:python和c++分别在Linux和Windows下联合调试 首先创建一个python测试项目和一个c++拓展项目 一、在Windows下进行调试 1. 编译器安装 2. C拓展模块安装 3. 调试 3.1 vscode调试配置 3.2 调试 二、在Linux下进行调试 环境 1. Python环 阅读全文
posted @ 2023-01-30 17:51 DoubleLi 阅读(484) 评论(2) 推荐(0) 编辑

摘要:说明: 当我们的python程序的一些函数的后端实现为C++时(比如Pytorch, TensorFlow或tvm等)可以使用当前方法调试。有两种方式可以安装调试环境: 一. 搭建环境 有两种方式搭建环境,第一种是用apt安装dbg包,第二种方式是编译python源码。 1.1 安装python的d 阅读全文
posted @ 2023-01-30 17:49 DoubleLi 阅读(244) 评论(0) 推荐(0) 编辑

摘要:首先,所有python的函数都是用extern "C"定义的,因此对于C和C++,其使用是一样的。 c语言调用python必须要有的API(不管有没有多线程): PyRun_SimpleString //执行一段python代码 PyImport_Import //导入python模块 PyModu 阅读全文
posted @ 2023-01-30 17:41 DoubleLi 阅读(312) 评论(0) 推荐(0) 编辑

摘要:今天看了近一天关于多线程的应用中,如何安全调用python方面的资料,开始的时候看的简直头大如斗,被python语言的全局锁(Global Interpreter Lock)、线程状态(Thread State )等都有点绕晕了,后来经过各方面文章和帮助文档的相互参考,发现对于2.4/2.5版本,提 阅读全文
posted @ 2023-01-30 17:34 DoubleLi 阅读(362) 评论(0) 推荐(0) 编辑

摘要:为什么? 1、提升效率。 2、一开始代码是在python中用了多进程,后面发现c++调用的Python代码是无法开启多进程的。由于Python解释器有全局解释所GIL的原因,导致在同一时刻只能有一个线程拥有解释器,所以在C++多线程调用python脚本时,需要控制GIL,线程获取GIL。 c++如何 阅读全文
posted @ 2023-01-30 17:33 DoubleLi 阅读(320) 评论(0) 推荐(0) 编辑

摘要:1、背景 简单说一下需求,Qt开发的上位机界面程序,需要调用Python编写的算法跑一个结果返回到界面上显示。 2、度娘出一篇博客,按照步骤进行环境搭建和简单的代码测试 环境搭建请参照如下博客地址: 博客:① https://blog.csdn.net/cholenmine/article/deta 阅读全文
posted @ 2023-01-30 17:29 DoubleLi 阅读(400) 评论(0) 推荐(0) 编辑

摘要:脚本语言是快速编写富有弹性的代码的重要方法之一,在 Unix 系统自动化管理中已经应用了多种脚本语言。现在,在许多应用开发中,也提供了脚本层,这大大方便用户实现通用任务自动处理或者编写应用扩展,许多成功的应用,诸如 GIMP、Emacs、MS Office、PhotoShop、AutoCAD 等都应 阅读全文
posted @ 2023-01-30 17:26 DoubleLi 阅读(436) 评论(0) 推荐(0) 编辑

摘要:由于Python解释器有全局解释所GIL的原因,导致在同一时刻只能有一个线程拥有解释器,所以在C++多线程调用python脚本时,需要控制GIL,线程获取GIL。 在主线程中初始化Python解释器环境,代码如下: { Py_Initialize(); //初始化Python环境 if ( !Py_ 阅读全文
posted @ 2023-01-30 17:20 DoubleLi 阅读(1021) 评论(0) 推荐(0) 编辑

摘要:项目需要C++调用python的算法,由于python算法比较耗时,因此采用在C++里启动working thread来调用python脚本,python代码里含有cv2.imread()等opencv的调用,在子线程里调用会卡死。 解决办法: //1,主线程初始化python时,需要使能多线程:P 阅读全文
posted @ 2023-01-30 17:15 DoubleLi 阅读(189) 评论(0) 推荐(0) 编辑

摘要:最近都很忙,忙着把公司的Python回测框架完成。前两天公司同事抱怨 C/C++调用Python超级烦人,动不动就返回NULL,而且内存暴涨,于是我决定尝试解决这个问题,提供一套完整的开发流程,供大家技术分享。要完成C/C++调用Python最好是熟悉C/C++和Python,否则出了问题就比较难解 阅读全文
posted @ 2023-01-30 17:13 DoubleLi 阅读(1916) 评论(0) 推荐(0) 编辑

摘要:python unicode字符编解码问题参见【Python笔记2.1】 python中用zipfile解压zip包网上资料一堆,这里就不多说了。 下面使用【Python笔记2.1】中总结出来的字符编解码函数来解决zipfile解压zip包的问题。时间仓促,直接上代码。 完整示例代码(含【Pytho 阅读全文
posted @ 2023-01-30 17:05 DoubleLi 阅读(135) 评论(0) 推荐(0) 编辑

摘要:以下部分参考[1],这里复制了其中一部分是为了防止原文被移动或删除。 概述 Python 中有字符串类型(str)和字节类型(byte),以及 Python 编码中最常见也是最顽固的两个错误: UnicodeEncodeError: 'ascii' codec can't encode charac 阅读全文
posted @ 2023-01-30 17:04 DoubleLi 阅读(551) 评论(0) 推荐(0) 编辑

摘要:概述 在上一篇笔记中讲述了C/C++多线程调用Python类,但是如果Python提供的接口不是class封装的情况该怎么办呢,此时如何保证在C/C++多线程调用Python代码时能够正常运行呢? 在多线程开发中,尽量避免使用全局变量,我们可以将Python中需要全局初始化的变量放到一个字典(或元祖 阅读全文
posted @ 2023-01-30 17:03 DoubleLi 阅读(122) 评论(0) 推荐(0) 编辑

摘要:概述 在多线程开发中,往往会涉及很多handle、对象等变量的存储,这时候对于Python代码,我们可以采用面向对象编程。下面主要讲述C/C++如何调用Python类。 先看一段Python代码 student.py class Person: def __init__(self): self.in 阅读全文
posted @ 2023-01-30 16:58 DoubleLi 阅读(282) 评论(0) 推荐(0) 编辑

摘要:C/C++调Python时,由于Python解释器有GIL(Global Interpreter Lock)的原因,导致在同一时刻只能有一个线程拥有GIL,我们可以将其简单理解为全局锁。所以在C/C++多线程调用Python时需要先获取GIL。 C/C++多线程调Python #include <s 阅读全文
posted @ 2023-01-30 16:52 DoubleLi 阅读(208) 评论(0) 推荐(0) 编辑

摘要:随着机器学习/深度学习这几年的的火热,python成了当红炸子鸡,使用python训练机器学习模型则成了开发人员们最喜欢的方法,但是由于过往调度系统一般都是用C++来开发的,因此我们只有两种方法来调用python脚本,一种是使用上篇中提到的子进程的方法,另外一种则是直接使用C++/python进行混 阅读全文
posted @ 2023-01-30 14:00 DoubleLi 阅读(164) 评论(0) 推荐(0) 编辑

摘要:最近在做C++调Python的work,简单总结下 (一) 初始化和关闭Python解释器 #include<Python.h> Py_Initialize(); … Py_Finalize(); 所有的Python程序都要在这之间执行 (二) load Python模块 又分为以下两种方式 (1) 阅读全文
posted @ 2023-01-30 13:57 DoubleLi 阅读(271) 评论(0) 推荐(0) 编辑

摘要:错误场景:一直等待全局锁。 解决方法: 一、首先定义一个封装类,主要是保证PyGILState_Ensure, PyGILState_Release配对使用,而且这个类是可以嵌套使用的。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <pyth 阅读全文
posted @ 2023-01-30 13:51 DoubleLi 阅读(52) 评论(0) 推荐(0) 编辑

摘要:项目场景: 在使用C++中thread类创建子线程完成相关功能,并且主线程不阻塞直到子线程完成。 问题描述: 子线程的初始化在对象的初始化过程中,并且子线程有自己独立的功能,主线程并不阻塞直到子线程完成对应的功能。类似代码示例如下: void task1(std::string msg){ std: 阅读全文
posted @ 2023-01-30 13:49 DoubleLi 阅读(1187) 评论(0) 推荐(0) 编辑

摘要:方法一:使用python提供给C/C++的API 主流方法将python程序编程文本形式的动态链接库,在c/c++程序中调用其中定义的函数。 本质上是在 c++ 中启动了一个 python 解释器,由解释器对 python 相关的代码进行执行,执行完毕后释放资源,达到调用目的,具体步骤如下: 1. 阅读全文
posted @ 2023-01-29 17:59 DoubleLi 阅读(1021) 评论(0) 推荐(0) 编辑

摘要:python卡死了怎么办? 一般的python程序卡死,可以用pycharm debug。但是有时候是python和c/c++库混合开发,比如pyqt或者boost python程序卡死,就非常难查。以前都是二分法注释代码查找问题,异常低效。 于是我尝试了vs2017的新功能:python & c+ 阅读全文
posted @ 2023-01-29 16:07 DoubleLi 阅读(227) 评论(0) 推荐(0) 编辑

摘要:说明: 当我们的python程序的一些函数的后端实现为C++时(比如Pytorch, TensorFlow或tvm等)可以使用当前方法调试。有两种方式可以安装调试环境: 一. 搭建环境 有两种方式搭建环境,第一种是用apt安装dbg包,第二种方式是编译python源码。 1.1 安装python的d 阅读全文
posted @ 2023-01-29 16:00 DoubleLi 阅读(103) 评论(0) 推荐(0) 编辑

摘要:python和c++分别在Linux和Windows下联合调试 首先创建一个python测试项目和一个c++拓展项目 一、在Windows下进行调试 1. 编译器安装 2. C拓展模块安装 3. 调试 3.1 vscode调试配置 3.2 调试 二、在Linux下进行调试 环境 1. Python环 阅读全文
posted @ 2023-01-29 15:54 DoubleLi 阅读(542) 评论(0) 推荐(0) 编辑

摘要:Linux下gdb调试C++代码:http://jingyan.baidu.com/article/acf728fd464984f8e410a369.html 主要ubuntu下使用C++调用Python: #python代码:(processing_module.py) import cv2 de 阅读全文
posted @ 2023-01-29 15:42 DoubleLi 阅读(221) 评论(0) 推荐(0) 编辑

摘要:一、同步概念 同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。 "同"字从字面上容易理解为一起动作。 其实不是,在这里,"同"字应是指协同、协助、互相配合。 线程同步,可理解为线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B执行,再将结果给A;A再 阅读全文
posted @ 2023-01-29 14:35 DoubleLi 阅读(511) 评论(0) 推荐(0) 编辑

摘要:全局变量是编程语言中常见的一种变量,通过全局定义,可以是某对象函数创建,也可以是本程序任何位置创建,能够被本程序中的所有对象或函数进行引用,全局变量的定义有利于程序的变量共享,简化了添加和修改的程序。 和C语言一样,Python也具有全局变量,其定义全局变量的用法有两种: 1. 声明法 该方法是直接 阅读全文
posted @ 2023-01-29 11:09 DoubleLi 阅读(686) 评论(0) 推荐(0) 编辑

摘要:现象说明:突然发现一台测试机器的java程序莫名其妙地没了,但是没有core dump!这就需要打开服务器的core文件生成的功能了,(即core dump文件),方便程序调试。 1)core文件简介 core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩 阅读全文
posted @ 2023-01-28 15:25 DoubleLi 阅读(108) 评论(0) 推荐(0) 编辑

摘要:接触c以来有很多好奇的问题,其中一类是关于栈的。比如:栈上存储了哪些数据?函数参数怎么传递的?返回值怎么传出去的?从一个函数是怎么跳转到另外一个函数的?为何gdb可以看到函数的调用栈?为何有些栈的信息会乱? 如果要讲清楚core栈的信息为何有很多问号,想了下觉得应该先从如何确定函数的调用栈来讲。 注 阅读全文
posted @ 2023-01-28 14:21 DoubleLi 阅读(903) 评论(0) 推荐(0) 编辑

摘要:1.环境配置 VS工程配置要和python一致,安装的python如果是64位的,工程配置也要选成64位的 在工程配置中添加包含目录和库目录,添加python环境目录里的include和libs文件夹路径。想要运行的keras-yolo3是在Anaconda中配置的环境,所以相应的文件夹路径可以在A 阅读全文
posted @ 2023-01-18 14:57 DoubleLi 阅读(447) 评论(0) 推荐(0) 编辑

摘要:c++和python使用混合编程,有四种方式来实现: (1)C++调用python (2)直接调用python文件并执行 (3)3.使用Cpython:这是一个第三方库,可以将python代码直接变成c代码 (4)使用pybind11库(建议),网址:pybind/pybind1 在这里描述VS写C 阅读全文
posted @ 2023-01-18 11:34 DoubleLi 阅读(1810) 评论(0) 推荐(0) 编辑

摘要:一、 模块 1、模块的概念 模块是 Python 程序架构的一个核心概念 每一个以扩展名 py 结尾的 Python 源代码文件都是一个 模块 模块名 同样也是一个 标识符,需要符合标识符的命名规则 在模块中定义的 全局变量 、函数、类 都是提供给外界直接使用的 工具 模块 就好比是 工具包,要想使 阅读全文
posted @ 2023-01-18 10:50 DoubleLi 阅读(47) 评论(0) 推荐(0) 编辑

摘要:realname: 实际等同于库文件的filename,是在库文件生成时就被指定的,如:gcc -shared -o $(realname) dependence flags realname的一般格式为 lib$(name).so.$(major).$(minor).$(revision),$(n 阅读全文
posted @ 2023-01-17 16:32 DoubleLi 阅读(252) 评论(0) 推荐(0) 编辑

摘要:通过一个简单的例子,体验一下Linux动态库soname的使用。 假设有一个动态库:libbar.so.1.1.0,其对应的三个名称如下。 realname:libbar.so.1.1.0 soname:libbar.so.1 linkname:libbar.so 先生成一个libbar.so,通过 阅读全文
posted @ 2023-01-17 16:28 DoubleLi 阅读(236) 评论(0) 推荐(0) 编辑

摘要:我们在linux下开发项目,有时会对外提供动态库,像***.so.1.0.0这样子的文件,另外提供相应的头文件。用户拿到动态库和头文件说明,就可以使用动态库里的function。 那随之而来的一个问题是,动态库的升级问题,我们的动态库更改了一个bug,升级了一个版本,那使用我们动态库的应用程序需要重 阅读全文
posted @ 2023-01-17 16:19 DoubleLi 阅读(1776) 评论(0) 推荐(0) 编辑

摘要:假如你运行这个软件时的路径是: /app/app.sh把这个可执行文件加上S权限:chmod u+s /app/app.sh当以普通用户运行这个脚本时,就相当于以root权限来运行。 阅读全文
posted @ 2023-01-16 14:03 DoubleLi 阅读(636) 评论(0) 推荐(0) 编辑

摘要:1: git branch | grep "*" 2: git symbolic-ref --short -q HEAD 3: git branch | grep \* | cut -d ' ' -f2 阅读全文
posted @ 2023-01-16 10:32 DoubleLi 阅读(371) 评论(0) 推荐(0) 编辑

摘要:shell脚本执行报错: -bash: ./test.sh: bin/bash: bad interpreter: No such file or directory 报错原因:最后发现是脚本头部写错了! 报错的: #!bin/bash 正确的: #!/bin/bash 如果头部写的是对的,则就要考 阅读全文
posted @ 2023-01-16 10:29 DoubleLi 阅读(170) 评论(0) 推荐(0) 编辑

摘要:问题 启动 Linux 系统并登录的过程中到底发生了什么事情,按下开机键或启动一个虚拟机,你就启动了一系列事件,之后会进入到一个功能完备的系统中,当你注销或者关机时,也是这样。更有意思的是,在系统启动以及用户登录或注销时,还可以让系统执行特定的操作。 注意:我们假定使用的是 Bash 作为登录及注销 阅读全文
posted @ 2023-01-13 11:32 DoubleLi 阅读(111) 评论(0) 推荐(0) 编辑

摘要:我在设置开机自启脚本时,把我这个脚本放在了/etc/init.d/下,但是–add时报错了,见下面后来度娘告诉我,得在这个文件里面添加两行注释,结果没问题了(加一个#chkconfig和#description就可以)然后再次添加并设置成开机自启动(注意防火墙和selinux) 这样开机自启的脚本就 阅读全文
posted @ 2023-01-13 11:25 DoubleLi 阅读(265) 评论(0) 推荐(0) 编辑

摘要:话不多说,本文介绍几种方法,希望能够对你的胃口。 文章目录 一、编辑/etc/rc.d/rc.local文件 二、crontab计划任务 三、使用systemd,自己写个服务就ok了 四、在/etc/profile.d/下写.sh文件 五、使用chkconfig管理,编辑/etc/init.d/下文 阅读全文
posted @ 2023-01-13 11:25 DoubleLi 阅读(13003) 评论(0) 推荐(0) 编辑

摘要:程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等。如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始。同样,Java 和 阅读全文
posted @ 2023-01-11 15:37 DoubleLi 阅读(99) 评论(0) 推荐(0) 编辑

摘要:1. 运行环境 Python3.9.6 2. __name__ __name__属于Python中的内置类属性,代表对应程序名称。如果当前运行的程序是主程序,此时__name__的值就是__main__,反之,则是对应的模块名。以一个例子来说明: 创建first_module.py文件,文件内容及运 阅读全文
posted @ 2023-01-11 15:32 DoubleLi 阅读(179) 评论(0) 推荐(0) 编辑

摘要:首先定义了一个test.py的文件,然后再定义一个函数,并在函数定义后直接运行: test.py def HaveFun(): if __name__ == '__main__': print('I am in my domain,my name is %s' % __name__) else: p 阅读全文
posted @ 2023-01-11 15:29 DoubleLi 阅读(176) 评论(0) 推荐(0) 编辑

摘要:关于Python的import你要知道的种种 常见用法 引入模块import <模块名>,例如import os 引入模块并起别名import <模块名> as <模块别名>,例如import numpy as np 引入部分函数、变量或类from <模块> import <要引入的>,例如from 阅读全文
posted @ 2023-01-11 15:21 DoubleLi 阅读(2707) 评论(0) 推荐(0) 编辑

摘要:在用python进行编程时,经常会使用第三方模块包。这种包我们可以通过 python setup install 进行安装后,通过 import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又不想安装到 python 的相应目录,可以放到本目录里进行impo 阅读全文
posted @ 2023-01-11 15:11 DoubleLi 阅读(257) 评论(0) 推荐(0) 编辑

摘要:模块 简介 模块是包含python的定义及语句的文件,其文件名就是模块名加后缀名.py ;说白了也就是一个.py文件;每个模块都有自己独立的符号表(命名空间);该命名空间被模块中定义的所有函数用作全局符号表使用。所以可以放心大胆的在模块内部使用这些全局变量,而不用担心和其他模块的全局变量搞混; 模块 阅读全文
posted @ 2023-01-11 12:31 DoubleLi 阅读(111) 评论(0) 推荐(0) 编辑

摘要:一、模块&包简介 模块:所谓模块就是一个.py文件,用来存放变量,方法的文件,便于在其他python文件中导入(通过import或from)。 包(package): 包是更大的组织单位,用来组织区别管理多个模块文件。 import 用来导入模块 from 用于从模块中导入方法(全部或部分),也可用 阅读全文
posted @ 2023-01-11 12:24 DoubleLi 阅读(717) 评论(0) 推荐(0) 编辑

摘要:python中from…import…的用法和讲解 在python中经常我们使用到from…import…这个句型,而这个句型后面跟着都是什么意思呢,今天我对其进行相应的总结,以便大家和我都能一起进行学习。首先看一个例子进行相应的分析: 1.直接调用函数: #函数文件,函数文件命名为wangke d 阅读全文
posted @ 2023-01-11 12:19 DoubleLi 阅读(1699) 评论(0) 推荐(0) 编辑

摘要:C++调用python 在C/C++中嵌入Python,可以使用Python提供的强大功能,通过嵌入Python可以替代动态链接库形式的接口,这样可以方便地根据需要修改脚本代码,而不用重新编译链接二进制的动态链接库。至少你可以把它当成文本形式的动态链接库,需要的时候还可以改一改,只要不改变接口, C 阅读全文
posted @ 2023-01-11 11:42 DoubleLi 阅读(5385) 评论(0) 推荐(0) 编辑

摘要:https://www.zhihu.com/question/23003213 知乎详细总结http://www.voidcn.com/article/p-wmqbbket-bdm.html 实例http://www.voidcn.com/article/p-zgwjtool-bdh.html 实例 阅读全文
posted @ 2023-01-11 11:40 DoubleLi 阅读(432) 评论(0) 推荐(0) 编辑

摘要:看到标题很多小伙伴会问:不是都说python是胶水语言,他调用什么什么语言封装的库来做一些什么事情吗?怎么小编你这反而变成被调用的对象了呢?没错,常规情况下一般都是以python语言作为主体调用其他语言。但是,一个系统要想提高运行速度,最好的方法还是使用C++等语言来编写更合适。但是一个系统的开发不 阅读全文
posted @ 2023-01-11 11:38 DoubleLi 阅读(1191) 评论(0) 推荐(0) 编辑

摘要:1 首先为什么要将python打包成so文件 Python是一种面向对象的解释型计算机程序设计语言,具有丰富和强大的库,使用其开发产品快速高效。python的解释特性是将py编译为独有的二进制编码pyc文件,然后对pyc中的指令进行解释执行,但是pyc的反编译却非常简单,可直接反编译为源码,当需要将 阅读全文
posted @ 2023-01-11 11:36 DoubleLi 阅读(923) 评论(0) 推荐(0) 编辑

摘要:一、问题 Python模块和C/C++的动态库间相互调用在实际的应用中会有所涉及,在此作一总结。 二、Python调用C/C++ 1、Python调用C动态链接库 Python调用C库比较简单,不经过任何封装打包成so,再使用python的ctypes调用即可。(1)C语言文件:pycall.c / 阅读全文
posted @ 2023-01-11 11:23 DoubleLi 阅读(532) 评论(0) 推荐(0) 编辑

摘要:作为一种胶水语言,Python 能够很容易地调用 C 、 C++ 等语言,也能够通过其他语言调用 Python 的模块。 Python 提供了 C++ 库,使得开发者能很方便地从 C++ 程序中调用 Python 模块。 具体的文档参考官方指南: Embedding Python in Anothe 阅读全文
posted @ 2023-01-11 11:00 DoubleLi 阅读(206) 评论(0) 推荐(0) 编辑

摘要:如何将Python文件发布成DLL供C/C++调用,试过两种思路: 一种是用Cython将Python文件转为.c文件,但是简简单单4行代码,由于调用了NumPy,生成.c文件有5000+行,而且完全找不到原python函数的入口,无奈放弃; 另一种思路是用CPython API给原Python函数 阅读全文
posted @ 2023-01-11 10:46 DoubleLi 阅读(4359) 评论(0) 推荐(0) 编辑

摘要:开机自启动脚本 网上常见的脚本开机自启方法是: 假设要自启的脚本位于 /home/user/test.sh 给脚本可执行的权限 sudo chmod +x /home/user/test.sh 将脚本文件放到 /etc/init.d/ 目录下 sudo cp /home/user/test.sh / 阅读全文
posted @ 2023-01-10 16:10 DoubleLi 阅读(1237) 评论(0) 推荐(0) 编辑

摘要:方法一,用户登录服务器,直接修改: crontab -e 然后添加: @reboot [nohup] {命令} ctrl + O ctrl + x 方法二,指定用户进行修改: sudo crontab -u {username} -e 然后添加: @reboot [nohup] {命令} ctrl 阅读全文
posted @ 2023-01-10 16:09 DoubleLi 阅读(919) 评论(0) 推荐(0) 编辑

摘要:1、打开crontab任务 crontab -e 2、设置脚本的启动时间 @reboot ( sleep 60 ; sh \path\demo.sh ) 设置脚本在启动后的60s启动 \path\demo.sh 就是脚本的存放地址 阅读全文
posted @ 2023-01-10 16:07 DoubleLi 阅读(231) 评论(0) 推荐(0) 编辑

摘要:Linux 下设置开机启动的三种简单但可行的开机启动设置方法。 方法一:修改 /etc/rc.d/rc.local 文件 /etc/rc.d/rc.local 文件会在 Linux 系统各项服务都启动完毕之后再被运行。所以你想要自己的脚本在开机后被运行的话,可以将自己脚本路径加到该文件里。 但是,首 阅读全文
posted @ 2023-01-10 14:35 DoubleLi 阅读(1156) 评论(0) 推荐(0) 编辑

摘要:示例: #! /bin/bash echo "测试写文件" cat>test<<EOF 这是一个由shell创建的文件 this is a file created by shell. we want to make a good world. EOF 其中,<<EOF 表示当遇到EOF时结束输入, 阅读全文
posted @ 2023-01-10 14:26 DoubleLi 阅读(223) 评论(0) 推荐(0) 编辑

摘要:在Linux中,语句中的分号一般用作代码块标识 1、单行语句一般要用到分号来区分代码块,例如: if [ "$PS1" ]; then echo test is ok; fi test is ok 该脚本或命令行中,需要两个分号才为正确的语句,第一个分号是then前的分号,用于标识条件块结束,第二个 阅读全文
posted @ 2023-01-10 14:16 DoubleLi 阅读(1093) 评论(0) 推荐(0) 编辑

摘要:一、定义变量variableName="value"注意:变量名和等号之间不能有空格,这和编程语言都不一样。 同时,变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z)。中间不能有空格,可以使用下划线(_)。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键字) 阅读全文
posted @ 2023-01-10 14:07 DoubleLi 阅读(1019) 评论(0) 推荐(0) 编辑

摘要:开机启动三种方法 方式一 添加命令 编辑文件 /etc/rc.local vi /etc/rc.local 在文件末尾加上你开机需要执行的命令即可(写绝对路径,添加到系统环境变量的除外),如: nohup /usr/local/srs2/objs/srs -c /usr/local/srs2/con 阅读全文
posted @ 2023-01-10 11:26 DoubleLi 阅读(1408) 评论(0) 推荐(1) 编辑

摘要:360导航团队使用 go 语言开发 web 服务时间也比较早,对于 go 服务的进程管理工具的选择上也做了很多尝试。 go 官方并没有提供任何进程管理工具供大家使用,所以我们往往部署线上的 go 服务时会借助其他工具。常用的方式无非是如下这几种: nohup + & 系统内置常驻进程管理工具(ini 阅读全文
posted @ 2023-01-09 14:48 DoubleLi 阅读(425) 评论(0) 推荐(0) 编辑

摘要:GO 编写的进程管理工具 Gosuv Gosuv是一个进程管理工具,使用Go语言编写。与python-supervisor的功能和用法类似。 一、Gosuv的特点: Web控制台部分做了重点加强,因为使用频率太高了,在网页上现在可以直接添加先的应用,网页查看日志的部分也做了优化,查看起来没有这么费劲 阅读全文
posted @ 2023-01-09 14:45 DoubleLi 阅读(264) 评论(0) 推荐(0) 编辑

摘要:最近用go语言重写了一个node的小项目,因为并发量大到两台node也只能勉强扛住的地步,顺便说一下,pm2的cluster模式在极高的并发量下其实不行,不知道为什么,后来用fork模式+node原生的cluster模块才搞定。 因为go重写的版本匆忙上线,测试时我居然用的是screen在后台跑。看 阅读全文
posted @ 2023-01-09 14:37 DoubleLi 阅读(238) 评论(0) 推荐(0) 编辑

摘要:pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能,在前端和nodejs的世界中用的很多。 但是pm2强大之处不止于此,你的go应用也可以用它来管理。之前go应用使用supervisor负责监控应用,类似的工具还有fore 阅读全文
posted @ 2023-01-09 14:31 DoubleLi 阅读(370) 评论(0) 推荐(0) 编辑

摘要:一.守护进程的前世今生# 守护进程,英文名:“daemon",也有守护神的意思。守护进程是一个在后台运行并且不受任何终端控制的进程,不会随着会话结束而退出。诸如 mysql、apache 等这类程序默认就提供了守护进程或者以守护进程的方式工作,我们熟悉的 “mysqld”、"httpd" 等其中的 阅读全文
posted @ 2023-01-09 14:25 DoubleLi 阅读(171) 评论(0) 推荐(0) 编辑

摘要:可以通过ip连接ping通,但是通过域名ping就会提示DNS暂时解析失败尝试了各种解决办法 一、resolv.conf 这个文件在debian9的目录/etc/systemed/目录下但是按照网上的方法直接打开DNS解析或者添加nameserver并不能起作用! 二、解决办法 直接在/etc/目录 阅读全文
posted @ 2023-01-06 18:22 DoubleLi 阅读(2499) 评论(0) 推荐(0) 编辑

摘要:方法一: 通过/etc/network/interfaces,在它的最后增加一句(多个dns之间用空格分隔): # interfaces(5) file used by ifup(8) and ifdown(8)# Include files from /etc/network/interfaces 阅读全文
posted @ 2023-01-06 18:20 DoubleLi 阅读(1501) 评论(0) 推荐(0) 编辑

摘要:使用ping命令测试百度域名时发现,无法解析这个域名,说明当前系统上没有配置DNS服务器。配置DNS服务器的方式主要有以下两种: 目录 1、修改DNS配置文件 /etc/resolv.conf 2、修改网卡配置文件 /etc/network/interfaces 1、修改DNS配置文件 /etc/r 阅读全文
posted @ 2023-01-06 18:19 DoubleLi 阅读(528) 评论(0) 推荐(0) 编辑

摘要:背景 在GCC中已经指定链接库,然而编译时却提示动态库函数未定义! 测试出现的错误提示如下: [GMPY@13:48 tmp]$gcc -o test -L. -lmylib test.c /tmp/ccysQZI3.o:在函数‘main’中: test.c:(.text+0x1a):对‘func_ 阅读全文
posted @ 2023-01-04 13:53 DoubleLi 阅读(575) 评论(0) 推荐(0) 编辑

摘要:情况描述: 这个错误在移植其它平台(Linux?)的代码到windows下,并使用较高版本的visual studio时可能会出现 错误原因:各平台下编码格式不同,在跨平台时代码可能需要切换到相应的编码格式(有的时候不会报这个错误,迷惑) 已有的解决方案: 方案一,将代码复制到sublime tex 阅读全文
posted @ 2023-01-03 17:38 DoubleLi 阅读(3031) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示