• 02进程


     1 """
     2 如何开启一个进程
     3 if __name__ == '__main__':原理
     4     main 的原理  它是分配资源的
     5     os
     6     Process
     7     fun
     8     用对象开启一个进程,需要再次开启资源,
     9     import  父进程文件
    10     加main的话就不用开一个又开一个进程,在Windows中的时候。
    11     在linux系统中运行的话
    12     copy了一份父进程中的东西
    13 
    14 父进程与子进程之间的关系
    15     父进程要负责回收子进程的资源
    16     父进程结束
    17     子进程结束后父进程才结束
    18     父进程结束,父进程代码显示结束了但是代码不会运行结束,会先回收子进程的资源,子进程结束后父进程才结束
    19     两个print先打印结束
    20 
    21 进程有什么特点?
    22     空间数据是完全隔离的,进程跟进程之间是隔离的不共享的
    23 返回值   不可以 子进程中的东西是返不回去的
    24 
    25 join
    26 
    27 面向对象开启进程
    28 """
    29 
    30 import os
    31 import time
    32 # print(os.getpid())   # 运行的那一刻就是当前py文件的进程号,她的父id是pycharm的id
    33 # print(os.getppid())
    34 from multiprocessing import Process
    35 
    36 n = 10
    37 
    38 
    39 def fun(num):
    40     global n
    41     n = 100
    42     # print("我得id是%s,父id是%s" % (os.getpid(), os.getppid()))   # 我得id是19876,父id是20532
    43     print(num)
    44     print("小明")
    45 
    46 
    47 # fun()
    48 # print(n)   # 100
    49 
    50 
    51 if __name__ == '__main__':
    52     # print("我得id是%s,父id是%s" % (os.getpid(), os.getppid()))   # 打印出来的是当前py的id  我得id是20532,父id是12012
    53     p = Process(target=fun, args=[2])  # 实例化对象,元组是一个元素的话一定要加逗号
    54     p.start()  # 开启子进程
    55     print("结束")
    56     print(n)  # 10
    57 
    58 """
    59 第二部分向下开始
    60 join方法
    61 """
    62 import os
    63 import time
    64 import random
    65 from multiprocessing import Process
    66 
    67 
    68 # 以下是同步效果
    69 def fun(num):
    70     print("%s号小明发邮件" % (num))
    71 
    72 
    73 if __name__ == '__main__':
    74     for i in range(10):   # 开十个进程
    75         p = Process(target=fun, args=(i,))  # 实例化对象
    76         p.start()  # 开始子进程
    77         p.join()   # 阻塞,等子进程结束
    78     print("发送结束")
    79 
    80 
    81 # 以下是异步效果
    82 def fun(num):
    83     print("%s号小明发邮件" % (num))
    84 
    85 
    86 if __name__ == '__main__':
    87     list = []  # 来一个空列表放新添加的对象
    88     for i in range(10):  # 先循环此代码,开启所有的进程,循环十次,下面执行十次相当于创建十个进程
    89         p = Process(target=fun, args=(i,))  # 实例化对象,元组一个元素的时候必须加逗号
    90         p.start()  # 开始子进程
    91         list.append(p)  # 把每个对象添加在列表中,之后在进行阻塞
    92     for j in list:  # 再循环此代码,按执行完的顺序阻塞
    93         j.join()  # 阻塞,直到子进程执行完毕
    94     print("发送结束")  # 最后打印结束
  • 相关阅读:
    配置中心(Config、Bus)
    链路追踪(Sleuth、Zipkin)
    服务网关(Zuul)
    服务熔断(Hystrix、Turbine)
    服务消费(Ribbon、Feign)
    Win10共享打印机不能用-卸载更新
    vb.net listview 可编辑 ,使用textbox附加实现
    vb.net 使用 ionic.zip 压缩解压缩 文件 文件夹
    Response.End() 与Response.Close()的区别(转载)
    vb6、vbA通过sendmessage postmessage 发送按键、字符到其他程序
  • 原文地址:https://www.cnblogs.com/zh1127487137/p/12624758.html
Copyright © 2020-2023  润新知