Linux之gcc命令

在linux 下生成.so共享库

要生成共享库,您需要先使用-fPIC(position independent code 位置无关代码)标志来编译C代码,
gcc -c -fPIC hello.c -o hello.o
这将生成一个目标文件(.o),现在你拿它并创建.so文件:
gcc hello.o -shared -o libhello.so
你也可以使用:gcc -shared -o libhello.so -fPIC hello.c 一步生成.so文件
我还建议添加 -Wall选项获取所有的警告,和-g选项获取调试信息,到你的gcc命令。

阅读全文

cookbook之C 语言扩展

使用C扩展

开发者有三种方法可以在自己的Python代码中来调用C编写的函数: ctypes,SWIG,Python/C API。每种方式也都有各自的利弊。
首先,我们要明确为什么要在Python中调用C?
常见原因如下:

阅读全文

cookbook之测试,调试和异常

在单元测试中给对象打补丁

写的单元测试中需要给指定的对象打补丁,用来断言它们在测试中的期望行为(比如,断言被调用时的参数个数,访问指定的属性等)
unittest.mock.patch() 函数可被用来解决这个问题。 patch() 还可被用作一个装饰器、上下文管理器或单独使用,尽管并不常见。

阅读全文

cookbook之脚本编程与系统管理

通过重定向/管道/文件接受输入

命令行的输出通过管道传递给该脚本、重定向文件到该脚本,在命令行中传递一个文件名或文件名列表给该脚本。
Python 内置的 fileinput 模块让这个变得简单

阅读全文

cookbook之并发编程

启动与停止线程

1
2
3
4
5
6
7
8
9
10
11
12
13
# Code to execute in an independent thread
import time
def countdown(n):
while n > 0:
print('T-minus', n)
n -= 1
time.sleep(5)
# Create and launch a thread
from threading import Thread
t = Thread(target=countdown, args=(10,))
t.start()

阅读全文