Python-如何在一个函数已经执行时停止多次调用?

时间:2018-11-05 07:16:53

标签: python-3.x

                h_error = abs(180 - current_pos)

                if custom_tracker and h_error > 40:
                    if no_rot_in_progress:
                        if current_pos < 140:
                            no_rot_in_progress = False
                            rot_cen = (180 - current_pos) * 22
                            print('rotation time required ' + str(rot_cen))
                            turn_left_ptz = muterun_js('onvif_movement/turn_left.js', str(rot_cen))

                            if turn_left_ptz.exitcode == 0:
                                print('Custom Tracker - Turned Left')
                                no_rot_in_progress = True
                                # print(response.stdout)
                            else:
                                print('failed left')

实际上以exit_code完成的时间与旋转相机所需的时间之间存在时间间隔。因此,这个turn_left_ptz javascript被多次调用。

我需要找到一种方法来停止正在进行的摄像机运动,而该运动功能尚未完成。

例如:脚本在1秒后将其注册为完成状态,但是实际需要花费rot_cen(例如5秒)的时间来移动摄像机。

sleep函数导致整个脚本卡住。

1 个答案:

答案 0 :(得分:0)

使用的python计时器。

                            if start_timer is None:
                                start_timer = timer()

                            turn_left_ptz = muterun_js('onvif_movement/turn_right.js', str(rot_cen))

                            custom_sync = True
                            rot_cen_in_sec = int(rot_cen / 1000)
                            time_required = rot_cen_in_sec + 3

                            end_timer = timer()
                            timer_diff = int(end_timer - start_timer)

                            if timer_diff >= time_required:
                                custom_sync = True
                            else:
                                custom_sync = False

                            if custom_sync:
                                start_timer = None
                                custom_sync_main = True
                            else:
                                custom_sync_main = False