pvp*_*ran 6 python python-multithreading python-3.x
我对 Python 还很陌生。我正在尝试使用threading模块。我遇到了Event物体。
事件对象具有
wait
set
clear
函数。我明白 wait、set 和clear 正在做什么。但我不太明白为什么有一个单独的明确方法。难道不能将其包含在 set 方法实现中吗?
到目前为止我看到的大多数代码都是set方法后面跟着一个clear方法。以便后续的wait方法调用wait。
我来自 Java 世界,我忍不住将其与 wait 和 notification 方法调用进行比较。需要明确的是,Java 中没有等效的方法调用。
是否存在使用 set 但不明确方法的用例?
我想说 Python 的Events 与 Java 的wait/notify正在实现不同的抽象,因此它们在不同的情况下很有用。
也许你正在寻找Python的Condition课程?这看起来更接近 JavaObject的wait机制notify,甚至遵循相同的方法命名约定
Future作为一个激励性的例子,考虑一下Python 中a 的实现,它可以只wait知道Event只有set当异步代码完成时才执行。在 Java 中,你必须做其他事情,因为代码中存在竞争条件:
synchronized (obj) {
if (!obj.has_result) {
obj.wait();
}
return obj.result;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6236 次 |
| 最近记录: |