I have a small application like this

acc = sc.accumulate(5)

def t_f(x,):
    global acc
    sleep(5)
    acc += x

def f(x):
    global acc
    thread = Thread(target = t_f, args = (x,))
    thread.start()
    # thread.join() # without this it doesn't work

rdd = sc.parallelize([1,2,4,1])
rdd.foreach(f)
sleep(30)
print(acc.value)
assert acc.value == 13

The code doesn't work unless I uncomment the thread.join

Any idea why?

Reply via email to