可以从命令行启动异构工作者:
# this runs in one shell process
dask-scheduler --scheduler-file scheduler.json
# this runs in another shell process/window
dask-worker --scheduler-file scheduler.json --name multi_proc --nprocs 5 --nthreads 1
# this runs in yet another shell process/window
dask-worker --scheduler-file scheduler.json --name multi_thread --nprocs 1 --nthreads 5
然后在您的脚本/笔记本中,您将连接到调度程序,client = Client('scheduler.json')
并在提交时指定任务的适当工作人员的名称,例如
# submit for completion only by the multi_thread worker
results_multi_thread = [client.submit(process_multi_thread, task, workers='multi_thread') for task in task_list]
# submit for completion only by the multi_process worker
results_multi_proc = [client.submit(process_multi_proc, task, workers='multi_proc') for task in task_list]
对于多个工作人员,您必须指定唯一的名称(例如multi_proc_1
,multi_proc_2
等),但正如您所见,这是一个相当复杂的过程,所以除非您的案例的具体情况是所有事情都必须一次性发生,否则我会坚持使用您正在使用的解决方案(两个单独的集群),因为它更容易编码/维护,并且希望在某些时候会支持异构工作人员。