Ram*_*hum 7 python queue multithreading
在该模块的queue类中Queue,有一些方法,即qsize,empty并且full,其文档声称它们"不可靠".
对他们究竟什么不可靠?
我注意到在Python文档站点上,有以下内容qsize:
注意,qsize()> 0不保证后续的get()不会阻塞,qsize()<maxsize也不保证put()不会阻塞.
我个人并不认为这种行为"不可靠".但这是"不可靠"的意思,还是这些方法中存在一些更加险恶的缺陷?
Ale*_*lli 10
是的,文档在这里使用"不可靠"来传达这个含义:例如,从某种意义上说,qsize并没有告诉你"现在"有多少条目,这个概念在多线程世界中不一定非常有意义(除了在采取同步预防措施的特定点之外) - 它告诉你"前一段时间"有多少条目...当你对该信息采取行动时,即使在下一个操作码中,队列也可能有更多条目,或者更少,或者根本没有,这取决于同时其他线程(如果有的话)---).
我不知道你指的是哪个队列模块,请问可以提供链接吗?
一种可能的不可靠性来源:通常,队列由一个线程读取并由另一个线程写入。如果您是访问队列的唯一线程,则可以可靠地实现 qsize()、empty() 和 full()。但是一旦其他线程介入,这些方法的返回值在您测试时可能已经过时了。
| 归档时间: |
|
| 查看次数: |
2190 次 |
| 最近记录: |