我在decorator中包装一个函数,以便每次调用它时都在一个新线程中启动。像这样:
def threaded(func):
def start_thread(*args, **kw):
"""Spawn a new thread on the target function"""
threading.Thread(target=func, args=args, kwargs=kw).start()
return start_thread
现在我有一个类,它的init方法每次都要在一个单独的线程中运行,并使用它自己的数据。我的想法是给它所有需要的数据,当init方法结束时,我的工作就完成了。所以我的课是这样的:
^{pr2}$我从另一个类调用这个类的构造函数,每次都传递新的参数,如下所示:
CreateFigures(newOpts, newList)
在这里,newOpts和newList可以在每次调用CreateFigures()构造函数时更改。我的问题是,每当我想启动一个新线程时,如何将数据安全地传递给这个构造函数。因为我目前的做法是,当多个线程同时访问同一数据时,情况变得一团糟。我尝试用如下Rlock对象将CreateFigures()构造函数的所有语句封闭在with块中:
def __init__(self, options, sList):
lock = threading.RLock()
with lock:
self.opt = options
self.li = sList
self.generateFigs()
self.saveFigsToDisk()
目前没有回答
相关问题 更多 >
编程相关推荐