Próbuję zaimplementować wątki (z wykorzystaniem dekoratorów) do mojej aplikacji, ale nie mogę zrozumieć pewnych rzeczy na temat blokad i zarządzania wątkami.Wątki z dekoratorami
import threading
def run_in_thread(fn):
def run(*k, **kw):
t = threading.Thread(target=fn, args=k, kwargs=kw)
t.start()
return run
class A:
@run_in_thread
def method1(self):
for x in range(10000):
print x
@run_in_thread
def method2(self):
for y in list('wlkefjwfejwiefwhfwfkjshkjadgfjhkewgfjwjefjwe'):
print y
def stop_thread(self):
pass
c = A()
c.method1()
c.method2()
Jak rozumiem, method1 i Method2 nie są zsynchronizowane, ale synchronizujący z tych rzeczy wykonawczych z pomocą zamków. Jak mogę dodać zamki do funkcji dekoratora?
Jak mogę zrealizować metodę zatrzymywania długich wątków za pomocą dekoratorów?
Co to jest synchronizacja między dwoma wątkami? – awatts
Być może powiedziałem coś niepoprawnego. Chcę mieć możliwość w niektórych przypadkach (nie zawsze) uruchomić drugi wątek po 1 wątku, a nie równolegle. –
Z pewnością prostym sposobem na to, aby nie uruchamiać kodu w wątku w tym przypadku. W takim przypadku możesz mieć dwie podobne metody, jedną, która wykonuje zadanie w wątku, a druga nie. Alternatywnie można przekazać parametr podczas wywoływania, który wskazuje, czy połączenie ma być nawiązywane, czy nie. – awatts