Tôi đang cố gắng triển khai luồng (sử dụng trình trang trí) cho ứng dụng của mình, nhưng không thể hiểu một số điều về khóa và quản lý chuỗi.Chủ đề với trang trí
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()
Theo tôi được biết, method1 và method2 chưa đồng bộ, nhưng đồng bộ hóa những thứ đó thực hiện với sự giúp đỡ của ổ khóa. Làm thế nào tôi có thể thêm khóa vào chức năng trang trí của tôi?
Làm cách nào tôi có thể nhận ra phương pháp dừng chuỗi dài bằng cách sử dụng trang trí?
Bạn muốn đồng bộ hóa giữa hai chủ đề là gì? – awatts
Có thể tôi đã nói điều gì đó không chính xác. Tôi muốn có khả năng trong một số trường hợp (không phải luôn luôn) chạy chuỗi thứ hai sau 1 chuỗi, không phải song song. –
Chắc chắn cách đơn giản để làm điều đó là không chạy mã trong một chuỗi trong trường hợp đó. Trong trường hợp đó bạn có thể có hai phương thức tương tự, một phương thức thực hiện nhiệm vụ trong một luồng và một tác vụ không thực hiện. Ngoài ra, hãy chuyển vào một tham số khi gọi điện cho biết cuộc gọi có được nối hay không. – awatts