import silently kills thread

前端 未结 1 628
无人共我
无人共我 2020-12-04 03:34

I have a simple program Base.py that tests if import is able to throw an exception when the module does not exist.

# Base.py
import         


        
相关标签:
1条回答
  • 2020-12-04 04:30

    You're running into the "import lock".

    The documentation mentions the limitations in importing during threads, you're violating the first one (emphasis mine):

    While the import machinery is thread-safe, there are two key restrictions on threaded imports due to inherent limitations in the way that thread-safety is provided:

    Firstly, other than in the main module, an import should not have the side effect of spawning a new thread and then waiting for that thread in any way. Failing to abide by this restriction can lead to a deadlock if the spawned thread directly or indirectly attempts to import a module.

    Secondly, all import attempts must be completed before the interpreter starts shutting itself down. This can be most easily achieved by only performing imports from non-daemon threads created through the threading module. Daemon threads and threads created directly with the thread module will require some other form of synchronization to ensure they do not attempt imports after system shutdown has commenced. Failure to abide by this restriction will lead to intermittent exceptions and crashes during interpreter shutdown (as the late imports attempt to access machinery which is no longer in a valid state).

    0 讨论(0)
提交回复
热议问题