实时检测变量变化

时间:2017-03-24 03:28:57

标签: python

是否可以设置具有实时变量更改的循环?我正在使用线程,变量可以在行之间经常更改。

我正在寻找类似的东西:

length = len(some_list)
while length == len(some_list):
    if check_something(some_list):
        # The variable could change right here for 
        # example, and the next line would still be called.
        do_something(some_list)

到目前为止,我没有运气,这在python中是否可能?

编辑:如果some_list发生变化,我正在寻找的更多东西会让循环重新启动。

1 个答案:

答案 0 :(得分:2)

如果它只是一个更改列表,您可以制作本地副本。

def my_worker():
    my_list = some_list[:]
    if check_something(my_list):
        do_something(my_list)

<强>更新

队列可能适合您。修改的东西需要发布到队列,所以它不是一个自动的东西。还存在后台线程落后并处理旧内容或者如果队列内存耗尽则最终导致崩溃的风险。

import threading
import queue
import time

def worker(work_q):
    while True:
        some_list = work_q.get()
        if some_list is None:
            print('exiting')
            return
        print(some_list)

work_q = queue.Queue()
work_thread = threading.Thread(target=worker, args=(work_q,))
work_thread.start()

for i in range(10):
    some_list.append(i)
    work_q.put(some_list[:])
    time.sleep(.2)
work_q.put(None)

work_thread.join()