首页 > 解决方案 > 使用两个线程同时操作 ptz 轴

问题描述

所以,我正在创建一个可以通过按下按钮来控制相机 ptz 的网络应用程序。在一个功能中,我希望能够在给定两个角度(平移和倾斜)的情况下将 ptz 移动到某个位置。我希望轴同时移动,就像平移移动时,倾斜也在移动。

我正在使用 python 来做到这一点,并且解决方案通过使用线程传递,因此动作是并行的。ptz 的命令必须是异步的,所以我使用 asyncio 来控制它。

我的意思是,要调用异步函数,我正在使用其他函数,以便可以在不等待的情况下调用该函数。

像这样:

def function_pan(...)
    set_event_loop(loop)
    loop.run_until_complete(function2)

async def function(...)
    await ...

这个逻辑也适用于倾斜函数。这些函数在一个类中。要调用 function_pan(或 function_tilt),我使用的函数也是 2 个线程(类外)的目标。

def function_move_pan(...)
    function_pan(...)

我的想法是同时调用 move_pan 和 move_tilt。如果我在其他功能中使用

def go(...)
    function_move_pan(...)
    function_move_tilt(...)

将会发生的是第一个函数将被调用,只有在它完成后,第二个函数才会被调用。我尝试了以下方法:

def go(...)
    thr=threading.thread(target=function_move_pan)
    thr.start()
    thr2=threading.thread(target=dunction_move_tilt)
    thr2.start()

它几乎奏效了。我的意思是它第一次工作,但后来我收到错误说像一个循环已经在运行等。

只是指 go(...) 函数由连接到 Web 应用程序中的按钮的烧瓶函数调用。

我想知道是否可以同时使用两个线程,并且给定两个值(平移和倾斜),烧瓶函数调用 go(...) 函数,但不会一遍又一遍地启动线程。

谢谢!

标签: pythonmultithreadingpython-asyncio

解决方案


推荐阅读