美文网首页
python入门开发学习笔记之多线程与进程的区别

python入门开发学习笔记之多线程与进程的区别

作者: 程序媛_lisa | 来源:发表于2022-05-25 11:01 被阅读0次

本节重点

掌握在一个进程下开启多个子进程与在一个进程下开启多个线程的区别
本节时长需控制在15分钟内

一 谁的开启速度快?

1、在主进程下开启线程

from threading import Thread

def work():
    print('hello')

if __name__ == '__main__':
    t=Thread(target=work)
    t.start()
    print('主线程/主进程')

执行结果如下,几乎是t.start ()的同时就将线程开启了,然后先打印出了hello,证明线程的创建开销极小

hello
主线程/主进程

2、在主进程下开启子进程

from multiprocessing import Process

def work():
    print('hello')

if __name__ == '__main__':
    #在主进程下开启子进程
    p=Process(target=work)
    p.start()
    print('主线程/主进程')

执行结果如下,p.start ()将开启进程的信号发给操作系统后,操作系统要申请内存空间,让好拷贝父进程地址空间到子进程,开销远大于线程

主线程/主进程
hello

二 瞅一瞅pid?

1、在主进程下开启多个线程,每个线程都跟主进程的pid一样

from threading import Thread
import os

def work():
    print('hello',os.getpid())

if __name__ == '__main__':
    t1=Thread(target=work)
    t2=Thread(target=work)
    t1.start()
    t2.start()
    print('主线程/主进程pid',os.getpid())

执行结果

hello 7939
hello 7939
主线程/主进程 7939

2、开多个进程,每个进程都有不同的pid

from multiprocessing import Process
import os

def work():
    print('hello',os.getpid())

if __name__ == '__main__':
    p1=Process(target=work)
    p2=Process(target=work)
    p1.start()
    p2.start()
    print('主线程/主进程',os.getpid())

执行结果

主线程/主进程 7951
hello 7952
hello 7953

三 同一进程内的线程共享该进程的数据?

1、进程之间地址空间是隔离的

from multiprocessing import Process
import os

def work():
    global n
    n=0

if __name__ == '__main__':
    n=100
    p=Process(target=work)
    p.start()
    p.join()
    print('主',n)

执行结果如下,毫无疑问子进程p已经将自己的全局的n改成了0,但改的仅仅是它自己的,查看父进程的n仍然为100

主 100

2、同一进程内开启的多个线程是共享该进程地址空间的

from threading import Thread
import os

def work():
    global n
    n=0

if __name__ == '__main__':
    n=100
    t=Thread(target=work)
    t.start()
    t.join()
    print('主',n)

执行结果如下, 查看结果为0,因为同一进程内的线程之间共享进程内的数据

主 0

相关文章

  • python入门开发学习笔记之多线程与进程的区别

    本节重点 掌握在一个进程下开启多个子进程与在一个进程下开启多个线程的区别本节时长需控制在15分钟内 一 谁的开启速...

  • Python学习17-多线程

    查看所有Python相关学习笔记 多线程开发: 进程: 进程的概念:运行着的程序每个进程至少包含一个线程线程是操作...

  • python之多线程与多进程入门

    python之多线程与多进程 关键词: GIL锁,IO繁忙,线程安全,线程同步,进程池,进程通信,队列 GIL锁;...

  • python多进程

    python之多进程 写在前面 前面学习了多线程今天来学习一下多进程,相对于多线程,其实多进程的使用在日常生活中会...

  • 作业2

    013-每特教育&蚂蚁课堂-第七期-从零开始学习多线程技术-多线程技术快速入门 什么是多线程 进程与线程的区别 多...

  • java面试3

    1. 进程与线程的区别? 进程和线程的关系: 进程与线程的区别: 2.struts2和springMVC的区别? ...

  • Python中的线程与进程

    进程会启动一个解释器进程,线程共享一个解释器进程 Python的线程开发 python的线程开发使用标准库thre...

  • Python实战 - 第7节:多进程爬虫的数据抓取

    笔记 进程与线程的关系 python中可使用multiprocessing来实现多进程from multiproc...

  • 大师兄的Python学习笔记(十一): 时间模块time,dat

    大师兄的Python学习笔记(十): 多进程和多线程大师兄的Python学习笔记(十二): 常用高级函数 一、基础...

  • Node.js 笔记02

    一、关于命令 常用命令: ​ 二、进程和线程 请参考python学习笔记中的线程和进程 进程:我们写的代码和程序都...

网友评论

      本文标题:python入门开发学习笔记之多线程与进程的区别

      本文链接:https://www.haomeiwen.com/subject/aqseprtx.html