управление потоком, как вырваться из вложенных циклов в нужную точку потока - PullRequest
0 голосов
/ 04 мая 2020

У меня есть код, который я использую для доступа к некоторым камерам, измеряющим высоту фигур. У меня есть сценарий, который почти работает, он выполняет все, что я хочу до тех пор, пока я не измерил все и не хочу вырваться из циклов измерения и изменения высоты на go обратно на изменение частоты l oop - тогда я хочу измените частоту и продолжите измерение.

Этот код теперь настолько уродлив, что я не знаю, с чего начать с точки зрения его упрощения.

Токовый выход: код, проходящий измерения l oop (для m в n_list :), но когда он заканчивается, он продолжает возвращаться в то время, как l oop для измерения высоты (в то время как высота <= 2500 :) </p>

Желаемый результат: я хочу выйти из цикла измерения и изменения высоты на go обратно к изменению частоты l oop - тогда я хочу изменить частоту и продолжить измерения снова.

n = 9
for testFrequency in frequency_list:
    print('FOR LOOP : testFrequency in frequency_list')
    freq_setter(testFrequency, frequency_tolerance)
    time.sleep(2)#DEBUG TO VISUALLY CHECK THAT THE FREQUENCY IS CHANGING
    for i in list([1]):
        print('FOR LOOP : for i in list([1])')
    #for i in list(range(1,2)):
        height = 100
        n_list = list(range(n))
        while height <= 2500:
            print(' WHILE LOOP : while height <= 2500')
            for m in n_list:  # n is set to 9
                print('FOR LOOP : for m in n_list:','m is :',m)
                shape_measured = False
                while shape_measured is False:
                    print('WHILE LOOP : shape_measured is False:')
                    #print('++DEBUG++  m:', m, 'of n_list, i.e. shape :',m+1, '\n')
                    if blob is not None and roi.Top < blob.Y and blob.Y < roi.Top+roi.Height/2:
                        #print('===== shape is in upper part of ROI =====', '\n')
                        heights_in_upper_roi.append(Height)
                        shape_positions_upper_roi.append(blob.Y)
                    if blob != None:
                        shape_heights_full_roi.append(height)
                        shape_positions_full_roi.append(blob.Y)
                        height +=1
                    if blob is None and len(heights_in_upper_roi)>=2:
                        print('************************ wooh', '\n'*3)
                        height_saved = height
                        jump_height = heights_in_upper_roi[-2]
                        measure_shapes(jump_height)
                        total_of_measured_shapes.append(m)
                        current_measured_shape = total_of_measured_shapes[-1]
                        if current_measured_shape == n_list[-1]:
                            print('/////////// LAST shape   X X X X X X X X X X X X X X X LAST shape')
                        #print('\n', '+++DEBUG+++ current_measured_shape :', current_measured_shape,'\n')
                        #print('\n', '+++DEBUG+++  while.height LOOP total_of_measured_shapes : ', total_of_measured_shapes, '\n')
                        height = height_saved + 5 # move the shape back below the ROI so that we start looking for the next shape
                        #total_of_measured_shapes = []
                        print('\n'*2,'total_of_measured_shapes', total_of_measured_shapes,'\n'*2)
                        heights_in_upper_roi = [] ; shape_positions_upper_roi = [] ; shape_heights_full_roi = [] ;shape_positions_full_roi = [] ; shape_positions_full_roi = []
                        shape_measured = True
                        print('status of shape_measured :',shape_measured)
                        #break
                        continue            
                    else:
                        height += 5
                    #break
            shapeWatch.Stop()

Кто-нибудь знает, как я добираюсь до вернуться к точке, где я могу перейти к следующей частоте в списке частот?

...