【发布时间】:2014-04-02 02:12:26
【问题描述】:
我正在编写一个程序,我想在其中异步评估一段代码。我希望它与主线程隔离,以便在不中断主程序的情况下引发错误、进入无限循环或其他任何事情。我希望使用threading.Thread,但这有一个大问题;我不知道如何阻止它。我尝试过 Thread._stop(),但这经常不起作用。我最终得到了一个我无法控制占用解释器时间和 CPU 能力的线程。如果我硬杀它,线程中的代码不会打开任何文件或做任何其他会导致问题的事情。
Python 的 multiprocessing.Process.terminate() 做得非常好;不幸的是,在 Windows 上启动一个进程需要将近一秒钟,这足以导致我的 GUI 出现烦人的延迟。
有谁知道 a:如何杀死 Python 线程(我认为我不在乎出口有多脏),或者 b:如何加快启动进程?
第三种可能是第三方库,它提供了异步执行的替代方法,但我从未听说过这样的事情。
【问题讨论】:
-
我不确定这是否可行。看看这个:stackoverflow.com/questions/11431637/…
-
能否在启动时创建单个worker
Process或Pool以避免按需创建进程的延迟? -
@eryksun:好主意。根据文档,Pool 确实有一个终止方法,这很重要。但是,它是否有办法启动新进程来替换已终止的进程,还是我必须手动执行此操作?考虑把它放在答案中!
标签: python multithreading python-3.x