zoukankan      html  css  js  c++  java
  • 7.对进程、线程、异步的理解


    ****全局变量:

    进程 对于全局变量都各自有一个
    线程 共享一个全局变量,但操作全局变量有问题,容易造成混乱一个线程未结束直接运行另一个线程。导致出错。


    ***多线程的一些问题:


    多线程程序的执行顺序是不确定的。当执行到sleep语句时,线程将被阻塞(Blocked),到sleep结束后,线程进入就绪(Runnable)状态,等待调度。而线程调度将自行选择一个线程执行。上面的代码中只能保证每个线程都运行完整个run函数,但是线程的启动顺序、run函数中每次循环的执行顺序都不能确定。

    ***多线程vs进程

    进程是系统自动进行资源分配和调度的一个独立单位
    线程是进程的一个实体,是cpu调度和分派的基本单位

    一个程序至少一个进程,一个进程至少一个线程
    进程在执行过程中拥有独立的内存单元,而多线程共享内存,执行效率高

    线程:计算机密集型(科学计算,解码编码)
    io密集型(web,文件读写)

    ——————————————————————————————————————————————————————

    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。
    异步交互:指发送一个请求,不需要等待返回,随时可以发送下一个请求,不需要等待。

    区别:异步交互优先级更高

    同步交互:银行转账系统

    ——————————————————————————————————————————————————————

    #创建进程对象并指定对象要完成的任务,为启动处于初始化状态
    p1=Process(target=f)

    target 表示进程实例所调用的对象

    #启动进程实例,但并不立刻运行,等待cpu使用资源

    p1.start()

    创建的Process对象,默认daemon 是False 非守护进程

    #进程 :
    1 守护 2 非守护
    一个程序可以启动很多进程,至少有一个非守护进程,一点只剩下守护进程,程序立即结束

    #返回对象名
    current_process().name
    修改名字只能在start之前修改
    也可以在p1=Process(target=f,name='')中修改

    #创建对象的状态
    p1=Process(target=f,name='') 初始状态
    p1.start() 就绪状态
    运行过程中,cpu可能会换走,变成就绪状态,等待获取cpu使用权
    直到进程的功能函数运行完毕进程进入死亡状态

    如果进程有 sleep和input 阻塞状态

    p1.join() 是否等待进程实例执行结束,或等待多少秒
    是主程序运行的

    p1.terminate():不管任务是否完成,立即终止
    主程序运行

    进程间传递:

    multiprocessing模块的Queue实现多进程之间的数据传递

    apply_async(func[, args[, kwds]]) :使用非阻塞方式调用func(并行执行,堵塞方式必须等待上一个进程退出才能执行下一个进程)

    异步:一个任务不用等待其它任务执行完毕再执行,可以立刻开始,互相不影响。
    po=Pool(3) #定义一个进程池,最大进程数3
    for i in range(0,10):
    #Pool.apply_async(要调用的目标,(传递给目标的参数元祖,))
    #每次循环将会用空闲出来的子进程去调用目标
    po.apply_async(worker,(i,))

    同步:协同步调,按照一定的顺序执行。
    po=Pool(3) #定义一个进程池,最大进程数3
    for i in range(0,10):
    po.apply(worker,(i,))

  • 相关阅读:
    Netty应用
    原生JDK网络编程- NIO之Reactor模式
    Kafka入门教程
    Java CAS
    Java读写锁
    遍历map的四种方法
    java selector
    Range Sum Query
    Increasing Triplet Subsequence
    Count Numbers with Unique Digits
  • 原文地址:https://www.cnblogs.com/lvjing/p/9524839.html
Copyright © 2011-2022 走看看