是否可能有多个客户端?例如,我是否可以让多个线程同时每个线程运行一个客户端,以便当一个线程阻塞时,其他线程可以继续运行?在这种情况下,每个客户端都将具有彼此不依赖的单独的任务图。
作为后续问题,如果可能的话,如何指定在哪里运行特定任务?当我执行dd.read_csv时,调用compute,我如何知道哪个客户端及其关联的调度程序/工作程序正在执行此操作?
是否可能有多个客户端
是的,这是可能的,例如,您可以同时在一个群集上运行计算,而在另一群集上同时运行其他计算]
我是否可以有多个线程,每个线程有一个客户端运行
不是运行您的工作的是客户,而是工作人员,所以我不确定您在问什么。
[当一个线程阻塞时,其他线程可以继续
客户端基本上是异步的,应该阻止的操作很少,并且取决于您何时呼叫它们。
当调用compute时,我如何知道哪个客户端及其相关的调度程序/工作程序正在执行此操作
thing.compute()
将使用默认客户端,它将是最近创建的客户端。函数dask.distributed.get_client()
将为您获取合适的函数。
要选择使用哪个,您可以使用以下任何一个:
fut = client.compute(thing)
fut.result() or client.gather(fut)
with client:
thing.compute()