import threading from time import sleep,ctime loops=[4,2] class ThreadFunc(object): def init(self,func,args,name=''): self.name=name self.func = func self.args=args def call(self): self.func(*self.args) def loop(nloop,nsec): print('开始循环',nloop,'在:',ctime()) sleep(nsec) print('结束循环',nloop,'于:',ctime()) def main(): print('程序开始于:',ctime()) threads = [] nloops = range(len(loops)) for i in nloops: t = threading.Thread(target=ThreadFunc(loop,(i,loops[i]),loop.name)) #传递一个可调用类的实例 threads.append(t) for i in nloops: threads[i].start() #开始所有的线程 for i in nloops: threads[i].join() #等待所有的线程执行完毕 print('任务完成于:',ctime()) if name=='main': main() 每一行代码在整个项目里面的作用,表示的是什么
时间: 2023-07-15 07:10:00 浏览: 69
判断Threading.start新线程是否执行完毕的实例
1. `import threading`:导入 Python 的 threading 模块,用于创建线程。
2. `from time import sleep,ctime`:导入 Python 的 time 模块中的 sleep 和 ctime 函数,用于线程等待和时间戳转换。
3. `loops=[4,2]`:定义一个列表,其中包含两个数值。
4. `class ThreadFunc(object):`:定义一个可调用类 ThreadFunc。
5. `def __init__(self,func,args,name=''):`:定义 ThreadFunc 的构造函数,初始化实例的属性 func、args 和 name。
6. `self.name=name`:初始化实例的属性 name。
7. `self.func = func`:初始化实例的属性 func。
8. `self.args=args`:初始化实例的属性 args。
9. `def call(self):`:定义一个方法 call,用于调用实例的 func 方法。
10. `self.func(*self.args)`:调用实例的 func 方法,并将 args 中的参数作为参数传递给 func 方法。
11. `def loop(nloop,nsec):`:定义一个函数 loop,用于模拟耗时操作。
12. `print('开始循环',nloop,'在:',ctime())`:输出开始循环的时间戳和循环编号。
13. `sleep(nsec)`:线程等待 nsec 秒。
14. `print('结束循环',nloop,'于:',ctime())`:输出结束循环的时间戳和循环编号。
15. `def main():`:定义主函数 main。
16. `print('程序开始于:',ctime())`:输出程序开始的时间戳。
17. `threads = []`:定义一个列表,用于存放线程。
18. `nloops = range(len(loops))`:生成一个包含两个元素的 range 对象。
19. `for i in nloops:`:循环两次。
20. `t = threading.Thread(target=ThreadFunc(loop,(i,loops[i]),loop.name))`:创建一个线程,target 参数为一个可调用类的实例化对象,即 ThreadFunc(loop,(i,loops[i]),loop.name),表示执行 loop 函数,并传递 i 和 loops[i] 作为参数,name 参数为 loop.name。
21. `threads.append(t)`:将创建的线程对象添加到列表中。
22. `for i in nloops:`:循环两次。
23. `threads[i].start()`:启动线程。
24. `for i in nloops:`:循环两次。
25. `threads[i].join()`:等待线程执行完毕。
26. `print('任务完成于:',ctime())`:输出任务完成的时间戳。
27. `if __name__=='__main__':`:判断是否执行当前文件。
28. `main()`:调用主函数。
阅读全文