zoukankan      html  css  js  c++  java
  • 开启线程的两种方式

    #线程开启一
    from threading import Thread
    import time
    def sayhi(name):
        time.sleep(2)
        print('%s say hello'%name)
    if __name__ == '__main__':
        t = Thread(target=sayhi,args=('egon',))
        t.start()       #刚刚开启就调用,因为还睡了两秒,所以先执行主线程
        print('主线程')
    

      

    #开启线程方式二
    from threading import Thread
    import time
    class Sayhi(Thread):
        def __init__(self,name):
            super().__init__()
            self.name = name
        def run(self):     #名字必须为run
            time.sleep(2)
            print('%s say hello'%self.name)
    if __name__ == '__main__':
        t = Sayhi('egon')
        t.start()    #start开始会运行run函数
        print('主线程')
    

     在一个进程字儿开启多个线程与开启多个进程的区别

    from threading import Thread             #线程模块
    from multiprocessing import Process         #进程模块
    import os
    def work():
        print('hello')
    if __name__ == '__main__':
        # t = Thread(target=work)    #开启线程速度较快
        t = Process(target=work)     #重新申请内存空间,速度慢
        t.start()
        print('主线程:%s'%os.getpid())
    

      线程与进程的区别

     线程中所有的数据共享

    守护线程与守护进程的异同:

      主线程会等到所有非守护线程结束,才销毁守护线程

      主进程的代码运行完毕,就会销毁守护进程,然后等非守护进程运行完毕,主进程结束。

     1 from threading import Thread
     2 import time
     3 def foo():
     4     print(123)
     5     time.sleep(2)
     6     print('end123')
     7 def bar():
     8     print(456)
     9     time.sleep(1)
    10     print('end456')
    11 if __name__ == '__main__':
    12     t1 = Thread(target=foo)
    13     t2 = Thread(target=bar)
    14     t1.daemon = True
    15     t1.start()
    16     t2.start()
    17     print('this is father')
    守护进程与守护线程
  • 相关阅读:
    屏蔽右键
    无法解析类型 java.lang.Object。从必需的 .class 文件间接引用了它
    屏蔽右键
    Servlet的三个基本方法
    应用HttpClient来对付各种顽固的WEB服务器 摘抄
    Apache xmlrpc
    利用缓存机制快速读取XML文件数据
    JDBC连接MySQL
    HttpClient入门
    5款主流NoSQL数据库全方位横评
  • 原文地址:https://www.cnblogs.com/52-qq/p/7448304.html
Copyright © 2011-2022 走看看