如何在python中完成第二个线程时停止第一个线程?
发布时间:2020-12-20 13:31:39 所属栏目:Python 来源:网络整理
导读:有没有办法在第二个线程结束时停止第一个线程? 例: from functools import partialimport threadingdef run_in_threads(*functions): threads=[] for function in functions: thread=threading.Thread(target=function) thread.start() threads.append(thr
有没有办法在第二个线程结束时停止第一个线程?
例: from functools import partial import threading def run_in_threads(*functions): threads=[] for function in functions: thread=threading.Thread(target=function) thread.start() threads.append(thread) for thread in threads: thread.join() def __print_infinite_loop(value): while True:print(value) def __print_my_value_n_times(value,n): for i in range(n):print(value) if __name__=="__main__": run_in_threads(partial(__print_infinite_loop,"xyz"),partial(__print_my_value_n_times,"123",1000)))))) 在上面的例子中,我在线程中运行两个函数,并且我必须在第二个线程完成时停止第一个线程.我读到它支持事件,但不幸的是我还没有使用它. 解决方法
你可以像这样使用threading.Event:
import functools import threading def run_in_threads(*functions): threads = [] for function in functions: thread = threading.Thread(target = function) thread.daemon = True thread.start() threads.append(thread) for thread in threads: thread.join() def __print_infinite_loop(value,event): while not event.is_set(): print(value) def __print_my_value_n_times(value,n,event): for i in range(n): print(value) event.set() if __name__ == "__main__": event = threading.Event() infinite_loop = functools.partial(__print_infinite_loop,"xyz",event) my_values = functools.partial(__print_my_value_n_times,10,event) run_in_threads(infinite_loop,my_values) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |