【发布时间】:2012-12-23 11:03:18
【问题描述】:
我正在尝试在我的应用程序中实现线程(使用装饰器),但无法理解关于锁和管理线程的一些事情。
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()
据我了解,method1 和 method2 不是同步的,而是在锁的帮助下实现的那些东西的同步。如何为我的装饰器功能添加锁?
如何实现使用装饰器停止长线程的方法?
【问题讨论】:
-
你想在两个线程之间同步什么?
-
可能我说的有些不对。我希望在某些情况下(并非总是)有可能在 1 个线程之后运行第二个线程,而不是并行。
-
当然,最简单的方法是在这种情况下不在线程中运行代码。在这种情况下,您可以有两种类似的方法,一种在线程中执行任务,另一种不执行。或者在调用时传入一个参数,指示调用是否要线程化。
标签: python multithreading decorator