python - 使用两个线程同时操作 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(...) 函数,但不会一遍又一遍地启动线程。
谢谢!
解决方案
推荐阅读
- vue.js - 如何模拟 VueJs 组件的“挂载”方法?
- c# - 通过控制器中的动作方法从cshtml文件发送多个参数
- ruby-on-rails - Rails 6.1.4 counter_cache 问题
- python - 在可访问的页面上出现 404 错误
- android-studio - 有没有办法在 IntelliJ/Android Studio 中对 dart 的文本颜色进行更细粒度的控制?
- youtube-api - 尽管视频中存在观看次数,但按国家/地区划分的 Youtube 观看次数返回空列表
- django - 如何从 api 获取变量并在 Nginx 配置文件中定义
- javascript - 如何将 CSS 样式应用于 Angular 中动态创建的 DOM 对象
- asp.net - 如何结合调试 azureapp 服务和 IIS 托管的 WCF?
- reactjs - 无法在 React Native 的自定义抽屉内容功能组件中使用 useContext 挂钩