python线程阻碍的问题请教

img
请教一下,我不知道这么写是不是有问题,但我确实想实现这个场景,或者有其它更好的替代方式.

我在做手机app自动化时,经常会因为比如电话/闹钟/更新提示框导致失败,所以想开辟一个线程单独处理这些事务.或者有其它更好的方式,请不吝赐教.

整体思路是对的

现在的情况是:程序一共有2个线程thread1(后面简称t1) 和main(后面简称m)

  • t1线程的工作内容是 t1函数里的,
  • m线程的工作内容是 if __name__下面的,包括创建和启动t1

既然t1 设置了dameon=True,显然是用来处理意外的,m去处理业务流程,这样业务流程结束之后t1跟着结束,没毛病


不过。。。。
看你的注释,打算把业务流程放在t1里执行,相当于处理业务流程和处理意外情况共用一个线程,那么又会相互阻塞了
这个和不创建多线程,直接使用m执行代码有啥区别吗?

没有。

如果你能理解上面的思路,接下来说一下实现细节

  1. t1线程每隔1秒检查是否出现“电话/闹钟/更新提示”,如果出现就直接消灭,如果没有,1秒后继续检查(说白了就是死循环,所以一定要设置dameon=True让程序顺利结束)
  2. m线程执行自动化测试,同时捕捉异常,如果出现意外(比如“电话/闹钟/更新提示”),等待2秒之后重试(t1会在1秒内解决这个意外)
  3. 完成

如果你不适应在主线程m中执行业务代码,那么可以创建两个线程:

  • t1负责处理意外,dameon=True
  • t2负责处理业务,dameon=False
  • m只需要创建t1和t2 就好了,然后等待t2结束