工作中写自动化脚本时遇到一个问题:长按一个控件后,出现控件内容变化,然后校验内容。开始写的时候每次走到校验的步骤时,其实前面长按的动作已经结束了,校验总是失败。
在一番百度之后发现了threading.Thread多线程的内容,下面大致讲述一下,以作记录。
先看以下代码:
import threading import time def test1(): m = 1 for i in range(20): print(m) time.sleep(1) m = m+1 def test2(): n = 1.0 for i in range(20): print(n) time.sleep(1) n = n+1 t1 = threading.Thread(target=test1) t2 = threading.Thread(target=test2) t1.start() t2.start()
time.sleep(15)
print("test")
代码中定义了两个方法,用于循环输出数字,为了区分其中一个输出的是小数。
然后通过 "threading.Thread(target=xxx)"实例化了一个线程对象,把方法名作为target传进去;后续通过threading.Thread().start()来启动线程。
上述代码段运行结果如下:
可以看到,在启动两个线程t1、t2之后,对应的方法一直在同步执行;而且在主文件执行到print("test")之后仍然在执行,直到执行完循环之后,整个脚本才停止。
另外使用threading.Thread实例化线程对象时,还可以通过args添加参数,来执行一些需要传递参数的方法,以及如何在线程执行过程中停止,这个还需要日后进一步学习,有时间会记录上来。