【问题标题】:Combining Greenleets with Flask, and Standard Threads将 Greenleets 与 Flask 和标准线程相结合
【发布时间】:2019-02-04 04:00:19
【问题描述】:

今天我遇到了一些棘手的情况。我一直在使用基于 eventlet 的 Flask-socketio 进程。为此,我还需要对 Thread 模块、socket 和 os 模块进行猴子补丁。

发生的情况是我正在运行正常的 Flask-socketio 进程中的后台线程。现在,该线程将在一段时间后创建一个进程(来自另一个脚本 Process.py),该进程将负责处理图像,并将使用 SimpleQueues 与其通信。第二个进程启动一个摄像头线程(picamera)来处理图像,该线程将负责获取新帧。

picamera 使用标准线程库的结果,所以我需要禁用猴子补丁并在 Process.py 的导入中使用标准线程 python 模块,并且仍然使用带有flask-socketio进程的补丁模块。这可能吗?是否可以在不同的进程上使用不同的线程模块?

【问题讨论】:

    标签: python-3.x python-multiprocessing flask-socketio


    【解决方案1】:

    简短的回答是,是的,您的主流程和子流程不一定都需要使用 eventlet。在子进程中不使用它并没有错,事实上,如果你要与硬件通信,使用 eventlet 几乎总是不能很好地工作。

    我认为您可以按照启动子流程的方式让事情顺利进行,但在我看来,如果您分别运行这两个流程,而不是将一个作为其他。您的主进程将是 100% eventlet,所有猴子都打了补丁,而您的摄像头进程将绝对没有 eventlet 的踪迹。这两个进程之间的通信是通过任何可用的 IPC 机制完成的。您可以使用队列、套接字等。相机进程将启动并进入等待状态,例如,通过观察主进程发出的作业队列。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2012-05-31
      • 1970-01-01
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多