zoukankan      html  css  js  c++  java
  • python之-线程原理-开启线程两种方式,以及子进程与子线程pid的区别

    1.什么是线程

        进程其实不是个执行单位,进程是一个资源单位,每个进程内自带一个线程,线程才是cpu上的执行单位

        如果把操作系统比喻成为一座工程

        在工厂内每造出一个车间---》启动一个进程

        每个车间内至少有一条流水线---》每个进程内至少有一个线程

        

    简单理解比喻:

            线程:单指代码执行的过程(代码的执行)

            进程:资源的申请与销毁的过程(申请内存空间,回收内存空间,pid号等)进程包含了线程


    2.进程与线程的区别

            1.线程:单个线程里的内存空间数据共享

            2.进程:物理内存空间隔离(多个进程内存空间彼此隔离)

                        同一个进程下的多个线程共享该进程内的数据

            3.创建数据

                造出线程的数据要快于进程:进程是告诉操作系统开辟内存空间

                                                            线程是告诉操作系统执行一条任务代码(线程的创建速度是进程的100倍)

                                                

    两种开启线程的方法:
    from threading import Thread, current_thread
    import time
    
    # 方式1                                                 函数开启方式
    def task(name):
        print('%s is runing '%name)
        time.sleep(2)
        print('%s is done'%name)
    
    t=Thread(target=task,args=('子线程',))
    t.start()
    
    
    
    # 方式2 类开启方式class Task(Thread): def run(self): print('%s is runing ' % self.name) time.sleep(2) print('%s is done' % self.name)t = Task()t.start()print('zhu')

    3.进程开启子进程是开辟新的内存空间,而线程开启子线程是共用一个内存空间,

        即:进程开启子进程的pid号不一样,

               线程开启子线程的pid号一样


    from threading import Thread
    from multiprocessing import Process
    import os
    
    def work():
        print('hello',os.getpid())
    
    if __name__ == '__main__':
        #part1:在主进程下开启多个线程,每个线程都跟主进程的pid一样
        t1=Thread(target=work)
        t2=Thread(target=work)
        t1.start()
        t2.start()
        print('主线程/主进程pid',os.getpid())
    
        #part2:开多个进程,每个进程都有不同的pid
        p1=Process(target=work)
        p2=Process(target=work)
        p1.start()
        p2.start()
        print('主线程/主进程pid',os.getpid())

  • 相关阅读:
    C#中yield return用法分析
    SQL表连接查询(inner join(join)、full join、left join、right join、cross join)
    SQL Server 数据类型转换函数
    linq查询结果指定列的两种方式
    html2cavans
    ORM
    Node.js Web 模块
    Node.js GET/POST请求
    Node.js 文件系统
    装逼利器函数注释
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111928.html
Copyright © 2011-2022 走看看