我有一个脚本,它运行相当多的并发线程(至少 200 个)。每个线程都会进行一些非常复杂的评估,这可能会花费大量时间。评估方法是用 C 实现的,我无法更改。我想限制每个线程的方法执行时间。请指教。
问问题
842 次
1 回答
1
根据我对您的问题的理解,使用多处理而不是多线程可能是一个很好的案例。多处理将允许您利用系统上的所有可用资源 - 如果您不小心,还可以使用一些资源。
线程实际上并不并行运行,因此除非您正在等待大量 I/O 或类似的事情,否则从单独的进程中调用它会更有意义。您可以使用Python 多处理库从 Python 脚本调用它,或者您可以使用用 C 编写的包装器并使用某种形式的进程间通信。第二个选项将避免为了运行一些 C 代码而启动另一个 Python 实例的开销。
您可以调用 time.sleep (或执行其他任务并检查系统时钟的经过时间),然后在所需的时间间隔后检查结果,允许任何尚未完成的进程在您使用结果时继续运行。或者,如果您此时不关心,您可以发送一个信号来终止该进程。
于 2012-08-31T23:24:58.750 回答