是否可以有多个客户在 dask 中?例如,我可以让多个线程在每个线程一个客户端运行,这样当一个线程阻塞时,其他线程可以继续吗?在这种情况下,每个客户端都会有独立的任务图,它们不相互依赖。
作为后续问题,如果这是可能的,那么我如何指定在哪里运行特定任务?当我执行 dd.read_csv,然后调用计算时,我如何知道哪个客户端及其关联的调度程序/工作人员正在执行此操作?
是否可以有多个客户在 dask 中?例如,我可以让多个线程在每个线程一个客户端运行,这样当一个线程阻塞时,其他线程可以继续吗?在这种情况下,每个客户端都会有独立的任务图,它们不相互依赖。
作为后续问题,如果这是可能的,那么我如何指定在哪里运行特定任务?当我执行 dd.read_csv,然后调用计算时,我如何知道哪个客户端及其关联的调度程序/工作人员正在执行此操作?
是否可以有多个客户在dask
是的,这是可能的,例如,您可以在一个集群上运行计算,同时在另一个集群上运行其他计算
我可以让多个线程与每个线程一个客户端一起运行吗
不是客户运行你的工作,而是工人,所以我不确定你在问什么。
当一个线程阻塞时,其他线程可以继续
客户端很大程度上是异步的,几乎没有应该阻塞的操作,这取决于你何时调用它们。
调用计算时,我如何知道哪个客户端及其关联的调度程序/工作人员正在执行此操作
thing.compute()
将使用默认客户端,这将是最近创建的客户端。该功能dask.distributed.get_client()
将为您获取正确的功能。
要选择使用哪个,您可以使用以下任一种:
fut = client.compute(thing)
fut.result() or client.gather(fut)
with client:
thing.compute()