Použití vláken v rámci uzlu distribuované sítě (2)

Užitečné odkazy

Distsim changelog 4.11.2020

Výraz nonlocal

Umožňuje hledat vazby symbolů v nejbližším nadřazeném prostředí. Výchozí chování je prohledat prostředí lokální. Tento krok je v případě nonlocal přeskočen.

1
2
3
4
5
6
7
8
9
10
def function():
    result = None

    def inner_function():
        nonlocal result
        result = True
    
    inner_function()

    print(result)

Výraz nonlocal je užitečný pokud vytváříme vlákna v rámci procesu mezi kterými chceme sdílet data.

Rozšíření Heart beat

Dnešním úkolem bude rozšířit Heart Beat z minulého cvičení. V minulém cvičení počet úloh odpovídal počtu worker uzlů. V realitě máme většinou větší počet úkolů než je uzlů typu worker, proto je nutné implementovat postupné opakované přiřazování práce jednotlivým uzlům.

Rozšířený uzel master bude mít tedy tyto tři části:

  1. Rozeslání úkolů
  2. Kontrola Heart Beats
  3. Příjem a třídění zpráv

Uzel master tedy rozdá práci tak, aby zaměstnal všechny nepracující uzly typu worker. Jakmile nějaký worker dokončí práci, informuje o tom uzel master. Ten si výsledek uloží, a poté uzlu pošle práci další.

Úkol
Naprogramujte rozšířenou verzi Heart Beats. Jako problém použíjte zvětšení čísla o jedničku. Uzel master tedy obdrží list hodnot, který je větší než počet uzlů worker. Výsledkem bude seznam, kde každé číslo bude zvětšeno o jedna.