python源码的保护

不想直接暴露python 源代码,

cython

依赖

  • cython
sudo pip install cython 
  • gcc
  • python dev
    通过源码编译安装的python 自带, 可以通过查找 Python.h 确认

验证

代码

from distutils.core import setup
from Cython.Build import cythonize
import sys
setup(ext_modules = cythonize('myos.py')) 
# -*- coding: utf-8 -*-
import sys
import os
import commands

def module():
    return __file__.rsplit('/', 1)[-1]
def hostname():
    status, output = commands.getstatusoutput('hostname')
    return output.strip() if status == 0 else None
def summ(k):
    _sum = 0
    if k < 0:
        k = 0
    for i in xrange(0, k):
        _sum += i
    return _sum
  • my_main.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
import os
import time
import myos

print 'my host:', myos.hostname()
print 'module:', myos.module()    
s = time.time()
for i in xrange(0, 10000):
    myos.summ(1000)
print 'summ: ', time.time() - s

编译

$python setup.py build 
running build
running build_ext
building 'myos' extension
creating build
creating build/temp.linux-x86_64-2.7
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/include/python2.7 -c myos.c -o build/temp.linux-x86_64-2.7/myos.o
creating build/lib.linux-x86_64-2.7
gcc -pthread -shared -Wl,-z,relro build/temp.linux-x86_64-2.7/myos.o -L/usr/lib64 -lpython2.7 -o build/lib.linux-x86_64-2.7/myos.so
$find . -name "*.so"
./build/lib.linux-x86_64-2.7/myos.so

执行

直接使用myos.py, 运行结果

$python my_main.py 
my host: zark-eu95-1.cz00b.stable.alipay.net
module: myos.py
summ:  0.334088087082

把myos.so cp 到 my_main.py 所在目录,删除myos.py myos.pyc

$python my_main.py                      
my host: zark-eu95-1.cz00b.stable.alipay.net
module: myos.so
summ:  0.238393068314

在cpu执行上,使用so 还是要比py快一点


ref

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值