我有一个阻塞函数,有时它无限期挂起,它不是cpu绑定的,它正在访问外部的东西,它也是对非托管代码的调用。我希望这可以在Windows或Unix上运行
使用超时运行此方法的最佳做法是什么?我假设这将涉及运行一个新线程并有一个等待事件。对于代码行和cpu而言,我是最轻量级的。
由于
答案 0 :(得分:0)
当您使用池和异步调用时,您将使用wait(timeout=None)
方法等待超时结果:
>>> import multiprocessing
>>> p = multiprocessing.Pool()
>>> a = p.apply_async(None) # Replace None with the function to execute.
>>> help(a.__class__)
Help on class ApplyResult in module multiprocessing.pool:
class ApplyResult(builtins.object)
| Methods defined here:
|
| __init__(self, cache, callback, error_callback)
|
| get(self, timeout=None)
|
| ready(self)
|
| successful(self)
|
| wait(self, timeout=None)
[...]
concurrent.futures还有wait
种方法或get
超时。