#计算斐波那契数实战
1方法
from distributed import Client
from dask import delayed, compute
@delayed
def fib(n):
if n < 2:
return n
# We can use dask.delayed and dask.compute to launch
# computation from within tasks
a = fib(n - 1) # these calls are delayed
b = fib(n - 2)
a, b = compute(a, b) # execute both in parallel
return a + b
if __name__ == "__main__":
# these features require the dask.distributed scheduler
client = Client("172.26.244.71:8786")
result = fib(10).compute()
print(result) # prints "55"
方法2:
from distributed import Client, get_client, secede, rejoin
def fib(n):
if n < 2:
return n
client = get_client()
a_future = client.submit(fib, n - 1)
b_future = client.submit(fib, n - 2)
# secede() #避免群体死锁
a, b = client.gather([a_future, b_future])
#rejoin()
return a + b
if __name__ == "__main__":
client = Client("172.26.244.71:8786")
future = client.submit(fib, 10)
result = future.result()
print(result) # prints "55"
## 方法3
from dask.distributed import worker_client
def fib(n):
if n < 2:
return n
with worker_client() as client:
a_future = client.submit(fib, n - 1)
b_future = client.submit(fib, n - 2)
a, b = client.gather([a_future, b_future])
return a + b
if __name__ == "__main__":
client = Client()
future = client.submit(fib, 10)
result = future.result()
print(result) # prints "55"