我正在为Java的tryAcquire信号量函数寻找python替代品。我发现这个函数是在pythonversion3及之后添加的。我使用的是python版本2.6.5。我还有别的选择吗?我只有一件事信号量.acquire(阻塞=错误) 这是我用Java编写的代码(信号量的发布是在另一个线程中完成的,我没有包括它的代码)
if(Sem.tryAcquire(30, TimeUnit.SECONDS))
log.info("testCall Semaphore acquired ");
else
log.error("Semaphore Timeout occured");
Semaphore
是用纯Python实现的-请参见http://hg.python.org/cpython/file/3.3/Lib/threading.py,从第236行开始。acquire
方法的实现方式如下:self._cond
是一个Condition包装Lock。在您可以直接在代码中使用
^{pr2}$Semaphore
的技术,而不是使用该类,但是将整个类复制到您自己的代码中可能会更容易一些。如果前向兼容性是一个问题,您甚至可以这样处理它:无论采用哪种方法,都需要新的
Condition
类——根据Condition.wait
的文档Semaphore
超时代码依赖于此行为。兔子洞似乎没有比这更深入,但是,最简单的解决方案可能是复制整个3.3threading.py
,对它在2.x上运行所需的任何更改进行修改,并在顶部添加一个显著的注释,说明您有意隐藏stdlib。在相关问题 更多 >
编程相关推荐