zoukankan      html  css  js  c++  java
  • 线程与非线程示例

    """
    这是单线程运行
    """
    # import time
    # def sing():
    #     for x in range(1,6):
    #         print("我在唱什么")
    #         time.sleep(1)
    # def dance():
    #     for x in range(1,6):
    #         print("我在跳什么")
    #         time.sleep(1)
    # def main():
    #     sing()
    #     dance()
    #
    # if __name__ == '__main__':
    #     main()
    
    
    """
    一个主线程 两个子线程   面向过程方式
    """
    # import  threading
    # import time
    #
    #
    # def dance(a):
    #     print("接收参数为a")
    #     for x in range(1,6):
    #         print("我在跳什么")
    #         time.sleep(1)
    #
    #
    # def sing(a):
    #     #获取当前线程的名字
    #     print("接收参数为a,当前线程名字为%s" %threading.current_thread().name)
    #     for x in range(1,6):
    #         print("我在唱什么")
    #         time.sleep(1)
    #
    #
    # def main():
    #     a = "孙悟空"
    #     #创建唱歌线程  参数依次为开始执行的函数名 线程的名字 线程运行所需的参数
    #     tsing = threading.Thread(target=sing,name = "唱歌",args =(a,) )
    #     #创建跳舞线程
    #     tdance = threading.Thread(target=dance,name = "跳舞",args =(a,))
    #     #启动线程
    #     tsing.start()
    #     tdance.start()
    #     #注意:要让主线程在等待子线程结束后再结束 否则删除分配空间可能会删除不干净
    #     tsing.join()#jdon()函数代表子线程结束了才能运行主线程
    #     tdance.join()
    #     #这里是主线程
    #     print("这里是主线程")
    #
    # if __name__ == '__main__':
    #     main()
    
    """
    面向对象的方式使用多线程
    """
    import threading
    import time
    
    #写一个类,继承自threading.Thread
    class SingThread(threading.Thread):
        #传递参数进去
        def __init__(self,name,a):
            #需要先调用一下父类
            super().__init__()
            self.name = name
            self.a = a
        def run(self):
            print("线程的名字是%s,接收的参数是%s" %(self.name,self.a))
            for x in range(1,6):
                print("我在唱下山")
                time.sleep(1)
    class DanceThread(threading.Thread):
        def run(self):
            #需要先调用一下父类
            super().__init__()
            for x in range(1,6):
                print("我在跳崖")
                time.sleep(1)
    #在主函数中使用线程
    def main():
        #创建线程
        tsing = SingThread('sing','张三')
        tdance = DanceThread()
        #启动线程
        tsing.start()
        tdance.start()
      #当然如果要对文件操作,还需要一些加锁解锁的操作
    #让主线程等待进程结束 tsing.join() tdance.join() if __name__ == '__main__': main()
    作者:求知鱼

    -------------------------------------------

    个性签名:你有一个苹果,我有一个苹果,我们交换一下,一人还是只有一个苹果;你有一种思想,我有一种思想,我们交换一下,一个人就有两种思想。

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

    独学而无友,则孤陋而寡闻,开源、分享、白嫖!

  • 相关阅读:
    初识Java,关于一个简单的ATM机的java程序设计
    字符串和字符串对象的区别
    集中常见得字符串处理方式
    得到类模板的3种方式
    反射的条件
    封装一个标签加文本框
    建立及中常见的布局管理器
    随机输入3个正整数,程序出来从小到大排列
    java 基础
    IO
  • 原文地址:https://www.cnblogs.com/Qiuzhiyu/p/12184545.html
Copyright © 2011-2022 走看看