根据进度,未来不会更新

时间:2018-05-15 06:29:21

标签: python-3.x multiprocessing future dask

的问题...

  1. 我正在向dask客户端提交功能并记录期货密钥。

  2. 我正在使用这些密钥以不同的方式实例化期货。

  3. 这些期货以「待定」模式叠加

  4. 我正在尝试的程序主干:

    from dask.distributed import Client, Future
    client = Client()
    
    def func1(client, data):
        future = client.submit(some_long_function, data)
        key = future.key
        return key
    
    key = func1(client, data)
    
    def func2(key):
        future = Future(key, client)
        print(future)  # !! Always show "pending" even when the process finished !
    

    如何使用未来的“密钥”来获取运行状态并在完成后检索结果?

    (注意:我不想使用“Future”对象本身,因为我想将此“密钥”发送到客户端javascript应用程序)

1 个答案:

答案 0 :(得分:1)

当未来在func1中收集垃圾时,客户端会向调度程序发送一条消息,表明它不再需要结果,因此它可能永远不会运行。您可能希望在未来致电fire_and_forget以确保其运行,即使您没有提及未来。

请参阅以下文档: