python - 如何将并发查询从 Python 处理程序输入到 C 函数并将输出重定向回 Python?

标签 python c multithreading sockets

我的 Web 应用程序位于 Python 框架中。我已经编写了一个 C 函数来进行复杂的计算。我想将 Python 处理程序收到的查询作为参数传递给我的 C 函数,并以 HTML 形式呈现结果。

这不仅仅是从 Python 调用 C 函数,还有来自 Python 的许多并行请求,并且所有“C 线程”都应该共享一个公共(public)资源。

如果我使用 Java,我会使用套接字和 Java 多线程来处理来自 Python 处理程序的并发请求,而不是 C。

我怎样才能在C中做类似的事情?是否有Python到C的多线程库和套接字库?标准的做法是什么

最佳答案

Python是用C写的,有很完整的C-API您可以使用它来编写自己的 Python/C 函数。不幸的是,由于 GIL(全局解释器锁),Python 永远不会有轻量级多线程接口(interface),但只要您小心返回的内容,C-API 中就没有这些限制。

如果这没有吸引力,常见的替代方案包括 cythonctypes .

Cython is a language that makes writing C extensions for the Python language as easy as Python itself.

同时

ctypes is a foreign function library for Python. It provides C compatible data types, and allows calling functions in DLLs or shared libraries. It can be used to wrap these libraries in pure Python.

关于python - 如何将并发查询从 Python 处理程序输入到 C 函数并将输出重定向回 Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109531/

相关文章:

python 2.7/exec/有什么问题?

c - 为什么 (1) ["abcd"] +"efg"-'b' +1 变成 "fg"?

python - 扩展算法所需的概念和工具

c# - 在 C# 中多线程处理多个文件的最佳方法是什么?

java - 我创建了一个线程吗?

python - python中的唯一排序

python - 使用 Python 迭代解压缩多个文件

python - Django REST Framework 序列化 ForeignKey 和 ManyToManyFields

c - 如何在 R 中创建用于测试和生产环境的单个共享对象(C 语言)

库达错误 C2054 : expected '(' to follow '__device__'