您正在遇到“导入锁定”。
该文档提到了线程期间导入的限制,您违反了第一个限制(强调我的意思):
虽然导入机制是线程安全的,但是由于提供线程安全的方式存在固有的限制,因此对线程导入有两个关键限制:
首先,除了在主模块中之外, 导入不应具有产生新线程然后以任何方式等待该线程的副作用
。如果产生的线程直接或间接尝试导入模块,则不遵守此限制可能导致死锁。其次,必须在解释程序开始关闭自身之前完成所有导入尝试。通过仅从通过线程模块创建的非守护程序线程执行导入,可以最轻松地实现这一点。守护程序线程和直接由线程模块创建的线程将需要某种其他形式的同步,以确保它们在系统关闭开始后不会尝试导入。不遵守此限制将导致间歇性异常并在解释器关闭期间崩溃(因为较晚的导入会尝试访问不再处于有效状态的机器)。



