zoukankan      html  css  js  c++  java
  • 线程 -threading模块

    主要内容:

    • 1.线程的创建
    • 2.多线程与多进程
    • 3.锁
    • 4.守护线程
    • 5.信号量

    1.线程的创建

    (1)方式一:

    from threading import Thread
    import time
    def func(n):
        time.sleep(2)
        print(n)
    
    if __name__ == '__main__':
        t = Thread(target=func,args = (1,))
        t.start()
        print("主线程结束")
    线程创建方式1

    (2)方式二:

    from threading import Thread
    
    class MyThread(Thread):
        def __init__(self,n):
            super().__init__()
            self.n = n
    
        def run(self):
            print (self.n)
    
    if __name__ == '__main__':
        t = MyThread("呵呵")
        t.start()
        print("主线程结束")
    线程创建方式2

    2.多线程与多进程

    进程:导入的模块、执行的python文件的文件所在位置、内置的函数、文件里面的这些代码、全局变量等等,然后线程里面有自己的堆栈(类似于一个列表,后进先出)和寄存器,里面存着自己线程的变量,操作等等,占用的空间很小

    (1)线程与进程的效率对比

    import time
    from multiprocessing import Process
    from threading import Thread
    
    def func(n):
        num = 0
        for i in range(n):
            num += i
    if __name__ == '__main__':
        #在主进程下开启线程
        t_s_t =time.time()
        t_lst =[]
        for i in range(10):
            t = Thread(target=func,args=(10,))
            t.start()
            t_lst.append(t)
        [tt.join() for tt in t_lst]
        t_e_t = time.time()
        t_dif_t = t_e_t - t_s_t
        #在主进程下开启子进程
        p_s_t = time.time()
        p_lst = []
        for ii in range(10):
            p = Process(target=func,args=(10,))
            p.start()
        [pp.join() for pp in p_lst]
        p_e_t = time.time()
        p_dif_t = p_e_t -p_s_t
        print("线程>>>>",t_dif_t)   #0.002962350845336914
        print("进程>>>>",p_dif_t)   #0.29871106147766113
        print("主线程结束")
    进程与线程的效率对比
  • 相关阅读:
    iOS开篇——UI之UILabel
    关于Block初识与自己的认识
    浅拷贝与深拷贝
    关于MacBook Pro选购
    准备考试 暂时停更
    Objective-C代理
    Objective-C协议初识
    Objective-C内存管理
    通讯录习题
    软件工程第二次作业 词频统计
  • 原文地址:https://www.cnblogs.com/wcx666/p/9865776.html
Copyright © 2011-2022 走看看