3)将每个文件的代码行数,分别加到对应的进程共享变量total_count_python,total_count_java,total_count_c的value值中。
4.使用多进程与队列,实现代码行数统计
1)使用multiprocessing.Queue ,定义一个队列,用于存取代码文件的绝对路径。
2)使用multiprocessing.Value(“d”,0),定义主进程与子进程之间的共享变量,用于存储每种类型的代码行数。
3)使用multiprocessing.Process,创建一个子进程,用于将文件路径放到队列中
4)使用multiprocessing.Process,创建多个子进程,用于从队列中获取文件路径,并统计代码行数。
print( "python代码总行数:", int(total_count_python. value)) print( "java代码总行数:", int(total_count_java. value)) print( "c语言代码总行数:", int(total_count_c. value)) end= time.time tatal_time = end - start #计算统计代码的总耗时print( "总耗时:",tatal_time) returnint(total_count_python. value), int(total_count_java. value), int(total_count_c. value),tatal_time
5.使用tkinter做一个简单的图形界面
1)使用askdirectory获取选择的文件夹路径。
2)定义点击事件,将获取到的文件夹路径做为参数传入,调用统计代码行的函数,计算代码行数。
3)将计算的结果,更新到图形界面。
defclick_submit: #点击"开始统计"按钮,触发代码统计,并更新统计结果dir_path=path.get #获取文本框中的目录路径total_line_count = get_total_code_lines(dir_path) # 调用统计代码方法,获取各类型代码行数total_count_python.set(str(total_line_count[ 0])) # 将统计的python代码行数更新并展示到文本框内total_count_java.set(str(total_line_count[ 1])) # 将统计的java代码行数更新并展示到文本框内total_count_c.set(str(total_line_count[ 2])) # 将统计的C语言代码行数更新并展示到文本框内total_time.set( "%.3f"%total_line_count[ 3]) # 将总耗时更新并展示到文本框内
defadd_Label_Entry(row,text,textvariable): #在同一行,分别创建标签和文本框Label(windows, text=text).grid(row=row, column= 2,ipadx= 5, pady= 5) #创建标签,用于显示代码类型Entry(windows, textvariable=textvariable).grid(row=row, column= 3,ipadx= 5, pady= 5) #创建文本框,用于展示统计的代码行数
if__name__ == '__main__': windows = Tkwindows.title( "统计代码行工具") #设置标题windows.geometry( "400x400") #设置大小path = StringVartotal_count_python = StringVartotal_count_java = StringVartotal_count_c = StringVartotal_time = StringVar
Label(windows,text = "代码行统计路径:").grid(row = 10, column = 2,ipadx= 5, pady= 50) Entry(windows, textvariable=path).grid(row= 10, column= 3,ipadx= 20, pady= 20) Button(windows, text= "选择", command=selectPath).grid(row= 10, column= 4,ipadx= 20, pady= 20) #创建"选择"按钮,并定义点击事件
Button(windows, text= "开始统计", command=click_submit).grid(row= 20, column= 3,ipadx= 60, pady= 30) #创建"开始统计"按钮,并定义点击事件add_Label_Entry( 60, "python代码总行数:",total_count_python) #在同一行,创建标签和文本框,用于展示python代码总行数add_Label_Entry( 70, "java代码总行数:",total_count_java) # 在同一行,创建标签和文本框,用于展示java代码总行数add_Label_Entry( 80, "C语言代码总行数:",total_count_c) # 在同一行,创建标签和文本框,用于展示C语言代码总行数add_Label_Entry( 90, "总耗时(s):",total_time) # 在同一行,创建标签和文本框,用于展示统计代码行数总耗时
windows.mainloop
6.最终效果
1)点击“选择”按钮,选择需要统计代码的目录
2)点击“开始统计”按钮,进行统计
3)统计完成后,在下方展示统计结果
(The End)
写作不易,请多多支持!一键三连哟!返回搜狐,查看更多