如何编写基于C的模块来处理python词典?

年轻

最近,我需要为群聊机器人编写一个模块,以响应每条消息并查找是否有与关键字匹配的内容。机器人本身基于Python并提供python API。由于业务需要,我可能想用C语言编写此过程,如下所示:

import my_c_module

DICTIONARY = {} # nested dictionary containing keywords, replies, modes, group context etc

async def respond_to_mesg():
    ....
    invokes the c function
    ....

c函数需要处理消息和字典并查看匹配项。

使我感到困惑的主要部分是,我不知道如何使C与该词典一起使用。这里需要使用哪种数据结构?

阿西什·穆鲁根(Athish Murugan)

首先,您需要为c文件生成一个共享库。假设文件名为library.c,具有函数myfunction。

int myFunction(int num) 
{ 
    if (num == 0) 

        // if number is 0, do not perform any operation. 
        return 0; 
    else
        // if number is power of 2, return 1 else return 0 

    num & (num - 1) == 0 ? return 1 : return 0 
}

您可以使用以下命令编译上述c文件library.c。

cc -fPIC -shared -o dicmodule.so library.c

上面的语句将生成一个名为dicmodule.so的共享库。现在,让我们看看如何在python中使用它。在python中,我们有一个称为ctypes的库。使用这个库,我们可以在python中使用C函数。

import ctypes 
NUM = 16      
# dicmodule loaded to the python file 
# using fun.myFunction(), 
# C function can be accessed 
# but type of argument is the problem. 

fun = ctype.CDLL(dicmodule.so)   
# Now whenever argument  
# will be passed to the function                                                         
# ctypes will check it. 

fun.myFunction.argtypes(ctypes.c_int) 

# now we can call this  
# function using instant (fun) 
# returnValue is the value  
# return by function written in C  
# code 
returnVale = fun.myFunction(NUM)

希望这很清楚。您需要根据需要进行修改。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写模块来处理 ExpressJS 会话?

如何在python中使用线程模块来处理同时的http请求?

如何基于其他词典订购词典?C#

如何用C ++编写几乎相同的具有相同名称的相同函数来处理不同的类参数?

如何在C#.Net Framework 4.6 WPF App中编写Python 3词典

C ++未来处理

Perl模块来处理请求响应

如何在Golang中编写函数来处理两种类型的输入数据

bash 脚本 - 如何编写有效的 case 语句来处理多个条件

Nodejs Express如何编写中间件来处理所有响应

如何编写通用函数来处理ReScript中的多种记录类型?

如何在Javascript中编写一种有效的方式来处理匹配模式?

编写一个函数来处理C#中的异常

基于cmd模块为python3 shell编写unittest

如何从Python词典列表中基于所选键删除重复词典?

设计模式以基于C#中的多个输入来处理动作

如何编写Python模块/软件包?

如何用C ++编写Apache模块?

如何在Play的主模块和子模块中设置jacoco4sbt来处理类?

如何编写Node.js模块以处理传入的管道流

用Golang和C编写的Python模块

如何编写能够返回 Python 迭代器对象的 C 代码(Python 模块的)?

如何编写一个可以调用来处理一个文件和多个文件的powershell脚本

如何捕获用C编写的python模块的运行时错误?

在Linux中,当读取基于I2C的RTC时,谁来处理计数器结转条件?

如何获取switch()来处理NA?

如何分配线程来处理Servlet请求?

如何通过对C函数和类对象的外部调用来处理C ++头文件

Python:如何从词典列表中构建词典