Python 的扩展概述
Python 的扩展有两种,一种是用C/C++来扩展Python, 另一种是用Python来扩展其他语言(这里以扩展C/C++为例).具体的调用概述如下.
1. 用C/C++扩展Python(即在Python模块中调用C/C++写的供Python调用的模块), 调用流程为:
Python Python/C-Api C-Api
--------- --------------- ---------
PyExtFun()| | |
--------->| PyExtFun() | |
|------------>| PyExtToCFun() |
| |---- |
| | | |
| |<--| |
| | |
| | call_cfun() |
| |-------------->|
| | |
| | call_CRet |
| |<------------- |
| |CApiToPyApi |
| |----- |
| | |
| call_pyfun()| <--|
|<------------|
| |
2. 用Python来扩展C/C++, 就是C/C++为主程序, 在其中调用Python的一些模块, 调用流程为:
C/C++Api CApi/Python Python
--------- --------------- ---------
CFun() | | |
-------->| CFun() | |
|------------>| CFunToPyFun() |
| |---- |
| | | |
| |<--| |
| | |
| | call_PyFun() |
| |-------------->|
| | |
| | call_PyRet |
| |<------------- |
| |PyApiToCApi |
| |------
| | |
| call_CFun() | <---|
|<------------|
| |