Python - 运行 同时编码

Python - Run Code Simultaneously

我有一个端点,它获取一些数据,然后 运行s 一些代码,大约需要 30 秒,然后返回特定于数据的响应。我需要能够在 30 秒内使用不同的数据多次访问端点,但代码仍然需要 运行 并返回正确的数据特定结果。

我的意思是:

class Foo(Controller):
    def POST(self, **kwargs):
        [Run Code That Takes 30 Seconds]
        Return [Result That Changes Bassed off POST request Sent]

当我现在 运行 这样做并且我在 30 秒内不止一次到达端点时,代码只是用新数据重新启动并完全忽略旧数据及其结果。

如何让端点在几秒钟内被命中多次,但仍然返回相应的结果?很高兴回答任何问题!

您应该首先分析您的脚本,以查看您的任务是否受 cpu 或 io 限制。

如果您的任务受 io 限制:

看看 asyncio 库 python 3

或者在线程库python 2 + python 3.

如果你的任务是cpu绑定

如果您的任务是 cpu 绑定的,您不能使用线程,因为 GIL

您可以选择:

  • 使用多处理库:python2 + python3.

  • 运行 每个 cpu 核心的 python 实例,每个 运行 一个不同的任务。

  • 使用类似Celery的任务队列。