zoukankan      html  css  js  c++  java
  • python 进程

    # 概念
    # 同步异步阻塞和非阻塞
    # 同步阻塞 : 调用一个函数需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作
    # inp = input('>>>')
    # 同步非阻塞 :调用一个函数需要等待这个函数的执行结果,在执行这个函数的过程中CPU工作
    # ret = eval('1+2+3-4')
    # 异步非阻塞 :调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU工作
    # start()
    # 异步阻塞 : 调用一个函数不需要等待这个函数的执行结果,并且在执行这个函数的过程中CPU不工作
    # 开启10个进程 异步的
    # 获取这个进程的返回值,并且能做到哪一个进程先结束,就先获取谁的返回值
    # 进程的三状态图
    # 就绪 -操作系统调度->运行 -遇到io操作-> 阻塞 -阻塞状态结束-> 就绪
    # -时间片到了-> 就绪
    # 进程的调度算法 : 短作业和长作业是有区别的,越长的作业被调度的没有短作业调度的积极
    # 每一个io操作都会让你辛苦排来的队执行的CPU机会让给其他程序
    # 先来先服务
    # 短作业优先
    # 分时的概念
    # 多级反馈算法
    # 进程开启和关闭
    # 父进程 开启了 子进程
    # 父进程 要负责给 子进程 回收子进程结束之后的资源

    # from multiprocessing import Process
    #
    # def task(n):
    # print(123)
    # print(345)
    #
    # if __name__ == '__main__':
    # p1 = Process(target=task,args=(1,))
    # p1.start()
    # p2 = Process(target=task,args=(1,))
    # p2.start()
    # p1.join() # 阻塞 等待p1执行完毕 join加入
    # p2.join() # 阻塞 等待p2执行完毕
    # p3 = Process(target=task,args=(1,))
    # p3.start()
    # Process类拾遗
    # 开启进程的另一种方法
    # 面向对象的方法,通过继承和重写run方法完成了启动子进程
    # 通过重写init和调用父类的init完成了给子进程传参数
    # Process类的一些其他方法属性
    # name pid ident daemon
    # terminate() isalive()
    # 守护进程
    # 在start一个进程之前设置daemon = True
    # 守护进程会等待主进程的代码结束就立即结束
    # 为什么守护进程只守护主进程的代码?而不是等主进程结束之后才结束
    # 因为主进程要最后结束,为了给守护进程回收资源
    # 守护进程会等待其他子进程结束么? 不会
    # 进程同步 -- Lock 锁 *****
    # 进程之间数据安全的问题

    # 进程之间通信 -- 队列 ***
    # 进程之间的数据共享 -- Manager *


    # import time
    # from multiprocessing import Process
    #
    # def son1():
    # while True:
    # print('--> in son1')
    # time.sleep(1)
    #
    # def son2(): # 执行10s
    # for i in range(10):
    # print('in son2')
    # time.sleep(1)
    #
    # if __name__ == '__main__': # 3s
    # p1 = Process(target=son1)
    # p1.daemon = True # 表示设置p1是一个守护进程
    # p1.start()
    # p2 = Process(target=son2,)
    # p2.start()
    # time.sleep(3)
    # print('in main')


    # 主进程会等待所有的子进程结束,是为了回收子进程的资源
    # 守护进程会等待主进程的代码执行结束之后再结束,而不是等待整个主进程结束.
    # 主进程的代码什么时候结束,守护进程就什么时候结束,和其他子进程的执行进度无关

    # 要求守护进程p1必须在p2进程执行结束之后才结束
    # import time
    # from multiprocessing import Process
    #
    # def son1():
    # while True:
    # print('--> in son1')
    # time.sleep(1)
    #
    # def son2(): # 执行10s
    # for i in range(10):
    # print('in son2')
    # time.sleep(1)
    #
    # if __name__ == '__main__': # 3s
    # p1 = Process(target=son1)
    # p1.daemon = True # 表示设置p1是一个守护进程
    # p1.start()
    # p2 = Process(target=son2,)
    # p2.start()
    # time.sleep(3)
    # print('in main')
    # p2.join() # 等待p2结束之后才结束

    # 等待p2结束 --> 主进程的代码才结束 --> 守护进程结束
    # 进城之间数据隔离
    # 进程之间通信(IPC) Inter Process communication
    # 基于文件 :同一台机器上的多个进程之间通信
    # Queue 队列
    # 基于socket的文件级别的通信来完成数据传递的
    # 基于网络 :同一台机器或者多台机器上的多进程间通信
    # 第三方工具(消息中间件)
    # memcache
    # redis
    # rabbitmq
    # kafka
  • 相关阅读:
    高斯消元(模板及bitset优化异或方程)
    dsu on tree
    拉格朗日插值
    [CF] CF900D Unusual Sequences
    【模板】Polya 定理
    Min-25筛学习笔记
    [CF] CF156C Cipher
    基于 Flink + Kafka 的广告实时数据分析建设与实践
    开源中国【面经】Java后台开发
    spring boot中连接数据库报错500(mybatis)
  • 原文地址:https://www.cnblogs.com/shaohuagu/p/12273506.html
Copyright © 2011-2022 走看看