我有以下脚本(不要参考内容):
import _thread
def func1(arg1, arg2):
print("Write to CLI")
def verify_result():
func1()
for _ in range (4):
_thread.start_new_thread(func1, (DUT1_CLI, '0'))
verify_result()
我想同时执行(比如4个线程) func1(),在我的情况下包括一个可能需要一段时间才能执行的函数调用。然后,只有在最后一个线程完成其工作后,我才想执行 verify_result()。
目前,我得到的结果是所有线程都完成了他们的工作,但 verify_result()在所有线程完成工作之前执行。
我甚至尝试在for循环下使用以下代码(当然我导入了线程)但是没有完成工作(不要参考参数)
t = threading.Thread(target = Enable_WatchDog, args = (URL_List[x], 180, Terminal_List[x], '0'))
t.start()
t.join()
答案 0 :(得分:2)
您的上一个body
示例已关闭,但您必须收集列表中的线程,立即启动它们,然后等待它们立即完成所有操作。这是一个简单的例子:
threading
答案 1 :(得分:1)
假设你有一个线程列表。 你循环(each_thread) -
for each_thread in thread_pool:
each_thread.start()
在循环内开始执行每个线程中的run函数。
同样地,你在之后编写另一个循环,你启动所有线程并拥有
for each_thread in thread_pool:
each_thread.join()
什么连接做的是它会等待线程i完成执行,然后让第一个线程完成执行。
线程会同时运行,join()
只会同步每个线程返回结果的方式。
具体而言,您可以使用join()
循环和运行verify_result()
功能。