zoukankan      html  css  js  c++  java
  • 线程

    线程
    1 什么是线程
    进程其实一个资源单位,而进程内的线程才是cpu上的执行单位
    线程其实指的就是代码的执行过程

    2 为何要用线程
    线程vs进程
    1. 同一进程下的多个线程共享该进程内的资源
    2. 创建线程的开销要远远小于进程
    主线程:进程中自带的线程
    开启线程的俩种方式:
    from threading import Thread
    import time
    
    def task(name):
        print('%s is running' %name)
        time.sleep(2)
        print('%s is done' %name)
    
    if __name__ == '__main__':
        t=Thread(target=task,args=('线程1',))
        t.start()
        print('') #资源 主进程   执行 主线程
    
    结果:
    线程1 is running
    主
    线程1 is done
    第一种
    from threading import Thread
    import time
    
    class Mythread(Thread):
        def run(self):
            print('%s is running' %self.name)
            time.sleep(2)
            print('%s is done' %self.name)
    
    if __name__ == '__main__':
        t=Mythread()
        t.start()
        print('')
    
    结果:
    Thread-1 is running
    主
    Thread-1 is done
    第二种

    第一个共享资源的例子,后面三个线程对象相关属性和方法

    from threading import Thread
    n=100
    def task():
        global n
        n=0
    
    if __name__ == '__main__':
        t=Thread(target=task)
        t.start()
        t.join()   #主线程等子线程运行完
        print('',n)
    
    结果
    主 0
    举例
    from threading import Thread
    import os
    
    def task():
        print('%s is running' %os.getpid())
    
    if __name__ == '__main__':
        t=Thread(target=task)
        t.start()
        print('',os.getpid())
    结果:
    主 0
    9808 is running
    主 9808
    线程pid
    from threading import Thread,active_count
    import time
    def task(name):
        print('%s is running' %name)
        time.sleep(2)
    
    if __name__ == '__main__':
        t=Thread(target=task,args=('子线程1',))
        t.start()
        t.join() #加了这个,子线程就结束了,还剩一个主线程,注释掉之后,结果会变2
        print('',active_count())
    
    #active_count() 线程活跃的个数
    结果:
    子线程1 is running
    主 1
    active_count 线程活跃的个数
    from threading import Thread,current_thread
    import time
    
    def task():
        print('%s is running' %current_thread().name)
        time.sleep(2)
    
    if __name__ == '__main__':
        t=Thread(target=task,)
        t.start()
        t.join()
        print('',current_thread().name)
    
    # 结果:
    # Thread-1 is running
    # 主 MainThread
    current_thread 查看当前线程
  • 相关阅读:
    兄弟连学python(1)——MySQL
    运算和运算符相关知识
    关于python中的快捷键
    关于爬虫
    Hello Python
    [ARC101C] Ribbons on Tree
    CF568E Longest Increasing Subsequence
    2021省选游记
    [NEERC2015]Distance on Triangulation
    dp的一些优化
  • 原文地址:https://www.cnblogs.com/zhouhao123/p/11224389.html
Copyright © 2011-2022 走看看