如何在python多线程环境中限制函数执行时间?

时间:2012-08-31 21:02:32

标签: python multithreading

我有一个脚本,它运行了很多并发线程(至少200个)。每个线程都会进行一些非常复杂的评估,这可能会花费不可预测的时间。评估方法在C中实现,我不能改变它。我想限制每个线程的方法执行时间。请指教。

1 个答案:

答案 0 :(得分:1)

根据我对您的问题的理解,使用多处理而不是多线程可能是一个很好的例子。多处理将允许您利用系统上的所有可用资源 - 如果您不小心,可以使用一些资源。

线程实际上并不是并行运行的,所以除非你在等待I / O或类似的事情,否则从一个单独的进程调用它会更有意义。您可以使用Python multiprocessing library从Python脚本中调用它,或者您可以使用用C编写的包装器并使用某种形式的interprocess communication。第二个选项将避免启动另一个Python实例的开销只是为了运行一些C代码。

您可以调用time.sleep(或执行其他任务并检查系统时钟的已用时间),然后在所需的时间间隔后检查结果,允许任何尚未完成的进程在您使用时继续运行结果。或者,如果你不关心那一点,你可以发送信号来杀死这个过程。