• 创建进程


    创建进程 方法一

     1 # ------------------------------------------------------------------------
     2 创建进程1
     3 # ------------------------------------------------------------------------
     4 
     5 # multiprocessing 多重处理
     6 # Process 过程
     7 # task 任务
     8 # 在windows系统中,创建进程会将代码以模块得方式从头到尾加载一遍
     9 # 进程一定要写在 if __name__ == '__main__': 代码块里面
    10 # 函数名一旦加括号,执行优先级最高,立刻执行
    11 
    12 from multiprocessing import Process
    13 import time
    14 
    15 def task(name):
    16     print('%s is running'%name)
    17     time.sleep(3)
    18     print('%s is over'%name)
    19 
    20 if __name__ == '__main__':
    21 
    22     # task('min')
    23     # 同步 函数或类加(),运行优先级第一
    24     # 提示创建,立即执行
    25 
    26     # 实例化一个Process对象
    27     p1 = Process(target=task, args=('max',))
    28     # 告诉操作系统创建一个进程
    29     p1.start()
    30 
    31     # 异步:start 提示系统创建,不管系统何时创建
    32     # 将代码丢一份到内存空间需要时间,再执行
    33     # 相当于遇到一次io
    34     # 状态变成 阻塞 --> 就绪
    35 
    36     # 时间因此'主进程'先打印输出
    37     print('主进程')


    创建进程 方法二

     1 # ------------------------------------------------------------------------
     2 创建进程2
     3 重写cls init方法
     4 run为模块接口函数
     5 # ------------------------------------------------------------------------
     6 
     7 from multiprocessing import Process
     8 import time
     9 
    10 class MyProcess(Process):
    11     def __init__(self,name):
    12         super().__init__()
    13         self.name = name
    14 
    15     def run(self):
    16         print('%s is running'%self.name)
    17         time.sleep(2)
    18         print('%s is end'%self.name)
    19 
    20 if __name__ == '__main__':
    21     obj = MyProcess('mac')
    22     obj.start()
    23     print('主进程')


    join方法:让主进程等待子进程运行结束再运行

     1 # ------------------------------------------------------------------------
     2 join方法
     3 让主进程 等待 子进程运行结束
     4 # ------------------------------------------------------------------------
     5 
     6 from multiprocessing import Process
     7 import time
     8 def task(name,s):
     9     print('%s is running'%name)
    10     time.sleep(s)
    11     print('%s is over'%name)
    12 
    13 if __name__ == '__main__':
    14     p1 = Process(target=task,args='max')
    15     start_time = time.time()
    16     p_list = []
    17     for i in range(3):
    18         p = Process(target=task,args=('子进程%s'%i,i))
    19         p.start()
    20         p_list.append(p)
    21     for i in p_list:
    22         i.join() # 让主进程 等待 子进程运行结束
    23     print('主进程',time.time()-start_time)
    24 
    25 # ------------------------------------------------------------------------
    26 # ps 进程之间数据隔离
    27 # ------------------------------------------------------------------------
    28 
    29     进程是将代码置入重开内存空间
    30     修改后的数据为置入内存空间的数据,非原代码数据


    
    
  • 相关阅读:
    无符号数和有符号数字操作的一些注意事项
    C/C++的基本数据类型
    GoLang字符串比较(二)
    Sphinx使用指南
    GoLang字符串比较(一)
    并发与调度亲和性
    golang scheduler工作窃取
    g0
    如何将markdown转换成微信公众号中支持的html
    goroutine是如何被回收的
  • 原文地址:https://www.cnblogs.com/max404/p/10822027.html
Copyright © 2020-2023  润新知