linux下的QT打包方法,通往过逝之路的python笔记之与C语言混编的三种办法

By admin in 美高梅手机版4858 on 2019年5月4日

一句话非常粗大略,贰个shell脚本消除,不跟你喜上眉梢

#!/bin/bash

#!/bin/bash

Python最近几年风头一贯很盛,占有了繁多世界的职责,Web、大数量、人工智能、运转均有它的人影,以至图形分界面做的也很顺,以至full-stack这一个词语刚出来的时候,就像是就是为了描述它。

#!/bin/sh
exe=”ThorIceLocker”#寄存你的可施行文件的名字
des=”/home/ninetripod/Desktop/thor/debug/”#可施行文件的路径
deplist=$(ldd $exe | awk ‘{if(match($3,”/”)){printf(“%s “),$3}}’)
cp $deplist $des

#概念变量赋值时等号两边不可能有空格,不然会报命令不设有  

#概念变量赋值时等号两边不可能有空格,不然会报命令不存在  

Python虽有GIL的主题素材导致多线程无法充裕利用多核,但后来的multiprocess能够从多进程的角度来行使多核,以致affinity能够绑定具体的CPU核,这些难题也算获得消除。虽基本为全栈语言,但部分时候为了功能,恐怕依旧会去思量和C语言混编。混编是Computer里1个不得回避的话题,涉及的东西重重,技能、架构、团队气象、管理、客户等种种环节恐怕对其都有影响,混编这么些标题本身想开时候再开一贴专门探讨。本文只讲python和C混编的主意,大约有如下二种方式(本文背景是linux,其余平台能够类比):

# 运维shell脚本三种办法
# 1、作为阐述参数 /bin/sh test.sh ;  二、作为可实践文件 chmod +x
./test.sh
blog_url=”
# 1、
#号截取,从左往右删除从0起始到第四个地位至极原则(‘//’)部分,保留盈余部分
echo ${blog_url#*//}
#运营结果 如下  www.cnblogs.com/Bighua/p/7535900.html

# 运转shell脚本两种办法
# 1、作为解说参数 /bin/sh test.sh ;  2、作为可施行文件 chmod +x
./test.sh
blog_url=”
# 1、
#linux下的QT打包方法,通往过逝之路的python笔记之与C语言混编的三种办法。号截取,从左往右删除从0开端到第1个门户大概原则(‘//’)部分,保留盈余部分
echo ${blog_url#*//}
#运作结果 如下  www.cnblogs.com/Bighua/p/7535900.html

共享库

#2、 
##号截取,从左往右删除从0起初到终极1个才子佳人原则(‘/’)部分,保留盈余部分
echo ${blog_url##*/}
#运作结果如下  7535900.html

#2、 
##号截取,从左往右删除从0开首到最后3个男才女貌原则(‘/’)部分,保留剩余部分
echo ${blog_url##*/}
#运作结果如下  7535900.html

行使C语言编写翻译发生共享库,然后python使用ctypeCurry的cdll来展开共享库。

#叁、
%号截取,从右往左删除从#blog_url发轫到第三个卓殊原则(‘/’)部分,保留盈余部分
echo ${blog_url%/*}
# 运维结果如下

#三、
%号截取,从右往左删除从#blog_url初步到第3个格外原则(‘/’)部分,保留剩余部分
echo ${blog_url%/*}
# 运转结果如下

举个例子来讲如下,C语言代码为

#肆、
%%号截取,从右往左删除从#blog_url开头到终极1个相配原则(‘/’)部分,保留剩余部分
echo ${blog_url%%/*}
# 运维结果如下 http:

#肆、
%%号截取,从右往左删除从#blog_url伊始到最后三个非常原则(‘/’)部分,保留剩余部分
echo ${blog_url%%/*}
# 运营结果如下 http:

/* func.c */

intfunc(inta)

{returna*a;

}

#伍、从右边第多少个初阶截取多少个字符
echo ${blog_url:0:7}
# 运维结果如下 http://

#伍、从左侧第多少个起来截取多少个字符
echo ${blog_url:0:7}
#美高梅手机版4858, 运行结果如下 http://

python代码为

#六、从左边第多少个字符开端到截止
echo ${blog_url:7}
# 运维结果如下 www.cnblogs.com/Bighua/p/7535900.html

#6、从左边第多少个字符开头到截至
echo ${blog_url:7}
# 运转结果如下 www.cnblogs.com/Bighua/p/7535900.html

#!/usr/bin/env python

#test_so.py

from ctypes import cdll

import os

p = os.getcwd() + ‘/libfunc.so’

f = cdll.LoadLibrary(p)

print f.func(99)

#柒、从左侧起数第多少个字符为源点,从左往右截取多少个字符
echo ${blog_url:0-7:2}
# 运转结果如下 00

#柒、从左边起数第多少个字符为源点,从左往右截取多少个字符
echo ${blog_url:0-7:2}
# 运转结果如下 00

测试如下

#八、从右起第多少个字符开头为起点,一贯到终极
echo ${blog_url:0-4}
# 运营结果 html 

#八、从右起第多少个字符初阶为起源,一贯到结尾
echo ${blog_url:0-4}
# 运营结果 html 

$ gcc -fPIC -shared func.c -o libfunc.so

$ ./test_so.py

9801

subprocess

C语言设计2个整机的可试行文件,然后python通过subprocess来实行该可试行文件,本质上是fork+execve。

比如如下,C语言代码为

/* test.c */#includeint func(int a)

{

return a*a;

}

int main(int argc, char **argv)

{

int x;

sscanf(argv[1], “%d”, &x);

printf(“%d\n”, func(x));

return 0;

}

Python代码为

#!/usr/bin/env python#test_subprocess.pyimportosimportsubprocess

subprocess.call([os.getcwd()+’/a.out’,’99’])

测试如下
$ gcc test.c -o a.out

$ ./test_subprocess.py

9801

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有