Python-实现未来对象

问题描述 投票:-1回答:1

我在python3中需要一个Future对象。

Python有两个内置的实现:

  1. asyncio模块有一个,但是不适合我的应用程序。

  2. concurrent.futures有一个,但是其文档说明该对象只能由Executor对象创建:

以下Future方法旨在用于单元测试和Executor实现。

https://docs.python.org/3/library/concurrent.futures.html#future-objects

基本界面是:

class Future:
   def get(self):
       pass
   def set(self, val):
       pass

虽然这里的关键是,如果在get之前调用set,则该方法将阻塞直到设置值。

[set正在设置值并释放正在等待get的线程。

在多线程应用程序中使用上述内置实现之一是否安全?

如何有效实施?

python concurrency future concurrent.futures
1个回答
0
投票

如何有效实施?

我不知道有效,但是简单

听起来像具有value成员,is_set成员以及lockcondition的类。 set()方法应

  • 锁定lock
  • 如果is_set已经为真,则引发错误,否则
    • is_set = True
    • 设置值
    • condition.notifyAll()

get()方法应锁定该锁,然后循环等待条件变量,直到is_set为True,最后返回该值。

如果有使用纯Python代码的更有效方法,那超出了我的范围。

© www.soinside.com 2019 - 2024. All rights reserved.