Python 在C语言中,是否可以通过重新编译动态库来将新代码集成到正在运行的进程中?

Python 在C语言中,是否可以通过重新编译动态库来将新代码集成到正在运行的进程中?,python,c,Python,C,我学习C是为了加快大型python项目的速度。为了向连续运行的python脚本添加新函数,我让它偶尔检查一个.py文件并集成其内容。我想知道是否有一种方法可以在C中实现类似的功能。有没有一种方法可以让它动态地获取动态库的内容?是的,您需要使用来访问库,而不是在编译时链接,然后使用dlsym来访问库中的函数。要切换到一个新库,您需要关闭句柄并创建一个新的句柄-将其包装到一个模块中以处理所有的库并不是一项非常困难的任务。您可以在windows中使用/I确信有一个与unix相当的库 在正在运行的进程中

我学习C是为了加快大型python项目的速度。为了向连续运行的python脚本添加新函数,我让它偶尔检查一个.py文件并集成其内容。我想知道是否有一种方法可以在C中实现类似的功能。有没有一种方法可以让它动态地获取动态库的内容?

是的,您需要使用来访问库,而不是在编译时链接,然后使用
dlsym
来访问库中的函数。要切换到一个新库,您需要关闭句柄并创建一个新的句柄-将其包装到一个模块中以处理所有的库并不是一项非常困难的任务。

您可以在windows中使用/I确信有一个与unix相当的库

在正在运行的进程中使用
dlclose
,可能会很棘手。您必须确保没有对旧库的引用(例如,指向其中静态变量的指针)。我觉得值得一提的是,尽管您可以链接任何您喜欢的库,只要您知道符号名称,就可以获得对其任何函数的引用,如果你想成功地调用它,你需要提前完成函数签名。实际上不是这样。理论上,您可以有一个单独定义的函数签名,该签名提供模块其余部分的签名以及加载程序模块随后解析并使用的自适应数据。它将是巨大而笨拙的,但你可以做到。你是否考虑过使用或来加速需要注意的代码?@ChrisProsser。我曾经考虑过pypy,但这是学习C语言的一个很好的借口。当我掌握了C语言后,我可能会选择cython。