让我们说我已经建立了一个小型的自定义类 - 我想很快在下面构建了一个代表性的原型 - 以帮助我保持并操作一些数据。
但最终用例是保留数据并定期删除旧数据,实际上只是保留较新的数据。我想开始我会尝试在15秒后删除所有数据。并且明白,在尝试对我拥有的数据进行操作/操作时,嗯,它确实不到15秒。所以这是所有新数据。
然后我可以让课程更复杂 - 做一些事情 - 不要删除所有数据,只删除非常旧的东西,或者将15秒间隔更改为动态/更智能等等。
但在我接近那一点之前,我被线程/计时器的工作方式弄得一团糟。我根据经验发现,下面的代码只打印出“Fresh”'如果我包含第二个/后续的threading.Timer调用INSIDE freshen_up方法,这是回调。我原本以为我只需要启动计时器一次,它只会每15秒调用一次回调。我是疯了,还是每次都需要设置计时器' (正如我在下面的代码中所做的那样),为了这个简单的实现工作?再说一遍,据我所知,这段代码有效,我很惊讶我每次都需要启动一个新的计时器。所以我想确保我没有做一些效率低下/不必要的事情,因为我对计时器工作原理缺乏了解...谢谢
import threading
class Fresh_Data_Container():
def __init__(self):
self.fresh_data_dict = {}
threading.Timer(15.0, self.freshen_up).start()
def freshen_up(self):
self.fresh_data_dict = {} # starting over for now, perhaps more nuanced later
print ('Fresh!')
threading.Timer(15.0, self.freshen_up).start() # does this really have to be here or am i looking at this wrong?
def add_fresh_data(self, some_key, fresh_data):
if some_key in self.fresh_data_dict:
self.fresh_data_dict[some_key].append(fresh_data)
else:
self.fresh_data_dict[some_key] = [fresh_data]
def operate_on_data(self):
pass # do stuff
答案 0 :(得分:2)
//Create workbook
Workbook wb = new Workbook();
//Access first worksheet
Worksheet ws = wb.Worksheets[0];
//Add hyperlink in cell A1
int idx = ws.Hyperlinks.Add("A1", 1, 1, "https://forum.aspose.com/c/cells");
ws.Hyperlinks[idx].TextToDisplay = "Cells Link No: 11";
//Add hyperlink in cell A2
idx = ws.Hyperlinks.Add("A2", 1, 1, "https://forum.aspose.com/c/total");
ws.Hyperlinks[idx].TextToDisplay = "Total Link No: 16";
//Add hyperlink in cell A3
idx = ws.Hyperlinks.Add("A3", 1, 1, "https://forum.aspose.com/c/words");
ws.Hyperlinks[idx].TextToDisplay = "Words Link No: 29";
//Add hyperlink in cell A4
idx = ws.Hyperlinks.Add("A4", 1, 1, "https://forum.aspose.com/c/pdf");
ws.Hyperlinks[idx].TextToDisplay = "Pdf Link No: 13";
//Add hyperlink in cell A5
idx = ws.Hyperlinks.Add("A5", 1, 1, "https://forum.aspose.com");
ws.Hyperlinks[idx].TextToDisplay = "Forum Link No: 20";
//Add hyperlink in cell A6
idx = ws.Hyperlinks.Add("A6", 1, 1, "https://forum.aspose.com");
ws.Hyperlinks[idx].TextToDisplay = "Forum Link No: 15";
//Autofit columns
ws.AutoFitColumns();
//Save the output Excel file
wb.Save("output.xlsx");
不是周期性的 - 也就是说,它只在经过15秒之后调用给定函数,而不是每15秒调用一次。
更好的方法是创建常规threading.Timer
而不是Thread
:
Timer