1、如果子线程是一个死循环,使用join()函数,不仅无法杀死该子线程,而且主线程也会卡死,因此在创建该子线程时,必须把daemon设置为True,即daemon=True,当主线程退出时子线程自动退出。即使子线程不是一个死循环,而是耗时较长,如果在其运行期间使用join()函数,也只能等待子线程运行完成才能杀死该子线程,在此期间主线程一直是卡死状态。综上所说,谨慎使用join()函数。
2、from PyQt5.QtCore import QTimer,QTimer并没有创建子线程,它仍属于主线程,它之所以可以与主线程并列运行,python可能使用了一种类似于时分复用的技术。它具备如下特点:
①在QTimer线程中,可以进行界面操作,而在子线程中却不可以;
②在QTimer线程中,不要出现无限循环或耗时太长,否则主线程会卡死;