在python的while循环内更​​改标志值的可能方法?

时间:2018-06-25 11:47:11

标签: python loops while-loop flags

所以我的问题是这样的:我正在运行一个while循环,每次将执行Function1,仅当它们各自的标志设置为True时才执行Function2和Function3,并且我希望能够 alter这些标志在循环运行时

while brkFlag == False:  
    Function1.run()
    if flag2 == True:
        Function2.run()
    else:
        pass    
    if flag3 == True:
        Function3.run()
    else:
        pass
    if someConditions == True:
        brkFlag = True

目前,我想在循环运行时使用GUI更改这些标志,并尝试使用tkinter的Buttons和Checkboxes来完成此操作,但到目前为止还没有运气。

我也不能使用多线程或多处理,因为它们会大大降低循环速度(目前已经几乎不能接受,因为每个函数中都有很多计算,因此我需要显示实时生成)。

编辑:因此看来,除了进行多线程/处理外,别无选择。

1 个答案:

答案 0 :(得分:0)

一种简单的方法是传递一个包含标志的可变容器,例如一个列表:

flags = [flag2, flag3, someConditions ]
while brkFlag == False:  
    Function1.run(flags)
    if flags[0] == True:
        Function2.run(flags)
    else:
        pass    
    if flags[1] == True:
        Function3.run(flags)
    else:
        pass
    if someConditions == True:     # or if flags[2] == True:
        brkFlag = True

在被调用方中,您或多或少地实现了

...
def run(flags):
    ...
    flags[0] = True    # set flag2
    ...