【问题标题】:Isolating code with a Python thread使用 Python 线程隔离代码
【发布时间】:2014-04-02 02:12:26
【问题描述】:

我正在编写一个程序,我想在其中异步评估一段代码。我希望它与主线程隔离,以便在不中断主程序的情况下引发错误、进入无限循环或其他任何事情。我希望使用threading.Thread,但这有一个大问题;我不知道如何阻止它。我尝试过 Thread._stop(),但这经常不起作用。我最终得到了一个我无法控制占用解释器时间和 CPU 能力的线程。如果我硬杀它,线程中的代码不会打开任何文件或做任何其他会导致问题的事情。

Python 的 multiprocessing.Process.terminate() 做得非常好;不幸的是,在 Windows 上启动一个进程需要将近一秒钟,这足以导致我的 GUI 出现烦人的延迟。

有谁知道 a:如何杀死 Python 线程(我认为我不在乎出口有多脏),或者 b:如何加快启动进程?

第三种可能是第三方库,它提供了异步执行的替代方法,但我从未听说过这样的事情。

【问题讨论】:

  • 我不确定这是否可行。看看这个:stackoverflow.com/questions/11431637/…
  • 能否在启动时创建单个workerProcessPool以避免按需创建进程的延迟?
  • @eryksun:好主意。根据文档,Pool 确实有一个终止方法,这很重要。但是,它是否有办法启动新进程来替换已终止的进程,还是我必须手动执行此操作?考虑把它放在答案中!

标签: python multithreading python-3.x


【解决方案1】:

就我而言,最好的方法似乎是维护一个正在运行的工作进程,并根据需要将代码发送给它。如果进程出现问题,我会立即将其杀死,然后立即启动一个新进程,以免下一次出现任何延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2015-03-23
    • 1970-01-01
    • 2012-11-15
    • 2016-05-06
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多