我是 python 新手,明天要提交我的项目。我正在使用 python 为 ubuntu 开发一个日志监控系统。我为日志分析设计了一个类。现在调用两个线程并调用该类的两个实例来一次监控超过 1 个日志。
当我首先运行代码时,两个线程都运行。但后来只有线程 2 运行。线程一不是。
请告诉我应该在哪里进行更改以修复它?或者建议任何其他多线程系统。请放一个函数的链接引用。我没有太多时间研究它。一个小的代码更正将非常有帮助。
def start_thread():
last_time=strftime("%Y-%m-%d %H:%M:%S", gmtime())
global CheckVar1
global CheckVar9
CheckVar1 = 1
CheckVar9 = 1
mylist.insert(END,last_time+" LOG MONITORING ACTIVATED.")
#lock=thread.allocate_lock()
thread.start_new_thread(_thread,("Thread No:1",1))
thread.start_new_thread(_thread1,("Thread No:2",8))
#------------------------------
def _thread(string2,sleeptime,*args):
#lock.acquire()
lineCount=0;
check=0;
print string2
#mylist.insert(END,"checking,,,")
#time.sleep(sleeptime);
logic()
def _thread1(string3,sleeptime2,*args):
#lock.acquire()
lineCount=0;
check=0;
print string3
#mylist.insert(END,"checking,,,")
#time.sleep(sleeptime2);
logic1()
btn_start = Button(app, text = "GO >>")
btn_start.grid(row=3,column=1,sticky=W);
btn_start["command"]=start_thread
class LogWatcher(object):
def __init__(self, log_file_name, callback):
self.log_file_name = log_file_name
self.callback = callback
global count_number_of_line
print log_file_name
self.initial_counting(log_file_name)
def looping(self, waiting_time=5):
while 1:
self.check_change(self.log_file_name, count_number_of_line)
print count_number_of_line
time.sleep(waiting_time)
def initial_counting(self, log_file_name):
.....
def check_change(self, log_file_name, last_count):
.......
def logic():
.....
m=LogWatcher("/var/log/auth.log", callback)
m.looping()
def logic1():
...
l=LogWatcher("/var/log/kern.log", callback2)
l.looping()
我没有把完整的代码放在这里。但是如果有人想让它运行,那么你可以从这里下载它