开启两种子进程的两种方式# # # 1 传统方式# from multiprocessing import Process# import time# def task(name):#     print ('%s is runing'%name)#     time.sleep(2)# if __name__ == '__main__': #在windows 系统下,开子进程的代码必须写到这一行下面#     p1 = Process(target= task,args = ('xiaowang',))    # 因为args 是个动态传参 是个他的结果是个元祖#     p2 = Process(target= task,kwargs={'name':'xiaoluo',})   # kwargs 是字典传参 上传的是键                                           # ,加个逗号才是元祖形式# #     #  知识点补充 函数传参的话: 在形参角度上,位置参数,*args (动态参数 返回的是元祖),# #     # 默认参数(等于的那个)**kwargs(动态参数返回的是字典)#     p1.start()   #只是在在给操作系统发一个一个信号,让操作系统去开进程,(申请内存+拷贝父进程的地址控制)#     p2.start()#     print('我是主进程')#     # 结果:    # 我是主进程    # xiaowang is runing    # xiaoluo is runing

    # 总结开个子进程,子进程和主进程并发运行(看起来是并行),先运行主进程在运行子进程,提升效率。    # 格式:    # 引用 from  multiprocessing import  Process    #      def  函数名(传参):    # 实例化 子进程对象=Process(函数名,动态参数(因为不确定上传的)=元祖形式)    #     注意*args = 元祖 因为 如果他在形参的角度上 实参上传后返回的是元祖    #     然而在实参这里 只有现在是元祖上 打印出才是字符串    # 然后开启 进程 子进程对象.start() 固定格式    # 以下就是主进程# 子进程的方法1 例子1 传统# from  multiprocessing import Process# import time# def eat(name):#     print('%s 正在吃饭'% name)#     time.sleep(2)# if __name__ == '__main__':#     role = Process(target = eat, args = ('子进程儿子王牧天',))  # 易错点 重点看#     role.start()#     print('我才是主进程爸爸')#     我才是主进程爸爸#     子进程儿子王牧天#     正在吃饭# 子进程的方法二  自定义的开启子进程的方法 但是不常用了解就行了# import time# from multiprocessing import Process# import time# class Myprocess(Process):#     def __init__(self,name):#         super().__init__()  #继承父类#         self.name = name#     def run(self):#         time.sleep(2)#         print('%s正在学习'% self.name)   # %s s 必须是小写# if __name__ =='__main__':#     p = Myprocess('小花')#     p.start()#     print('我是主进程')#     我是主进程#     小花正在学习# -------- ---------------------------# 关于join的用法 意思就是 在子进程打印完成后才打印主进程#每个对象加join 必须每个子进程运行完后在运行主进程# from  multiprocessing import Process# import time# def eat(name):#     print('%s 正在吃饭'% name)#     time.sleep(2)# if __name__ == '__main__':#     role1 = Process(target = eat, args = ('子进程儿子王牧天',))  # 易错点 重点看#     ## role.start()    # #role.join()    #print('我才是主进程爸爸')    # 结果:    # 子进程儿子王牧天    # 正在吃饭    # 我才是主进程爸爸    # role2 = Process(target=eat, args=('子进程媳妇小罗',))    # role3 = Process(target=eat, args=('子进程小馒头',))    # role1.start()    # role2.start()    # role3.start()    # role1.join()    # role2.join()    # role3.join()    # print('我是主进程遇到子进程的join 了')    # 子进程媳妇小罗    # 正在吃饭    # 子进程儿子王牧天    # 正在吃饭    # 子进程小馒头    # 正在吃饭    # 我是主进程遇到子进程的join了# -----------# # 子进程对象 为了节省代码 运用for 循环# from  multiprocessing import Process# import time# def eat(name):#     time.sleep(3)#     print('%s 正在吃饭'% name)# if __name__ == '__main__':#     role1 = Process(target = eat, args = ('子进程儿子王牧天',))  # 易错点 重点看#     role2 = Process(target=eat, kwargs={'name':'子进程媳妇小罗'})#     role3 = Process(target=eat, args=('我是小王了',))#     role_list=[role1,role2,role3]#     for role in role_list:#         role.start()#     for role in role_list:#         role.join()#     print('我是主进程遇到子进程的join 了')   #for循环的位置子进程加上join 就会等到子进程完毕在开始    # 子进程儿子王牧天正在吃饭    # 我是小王了正在吃饭    # 子进程媳妇小罗正在吃饭    # 我是主进程遇到子进程的join了# print('我是主进程遇到子进程的join 了')   #子进程加上join 就会等到子进程完毕在开始#     我是主进程遇到子进程的join 了#     我是主进程遇到子进程的join 了#     我是主进程遇到子进程的join 了#     子进程儿子王牧天 正在吃饭#     子进程媳妇小罗 正在吃饭#     我是小王了 正在吃饭#     我是主进程遇到子进程的join 了# -------------------------#    #os.getpid()   此处进程的id号码#    在cmd 中运行  tasklist 的意思就是计算机中所有的进程\#         找到python里面的文件的进程  在cmd中 tasklist |管道符  findstr  python  就会找到python的进程#         tasklist |findlist python# import time,os# print(os.getpid())      #3404# time.sleep(1000)# 显示当前的文件的id# ----------------------------# 其他方法的子孙三代的例子# from multiprocessing import Process# import time,random# def task():#     print('孙子运行了')#     time.sleep(3)# def piao(name):#     print('%s is piaoing' % name)#     time.sleep(random.randint(1, 3))#     print('%s is done' % name)#     p=Process(target=task,)   #子类 再次实行实例化 孙子的子进程#     p.start()# if __name__ == '__main__':#     p1=Process(target=piao,args=('alex',),name='xxxxxxxx')#     p1.start()    # print('主')    # 主    # alex is piaoing    # alex is done    # 孙子运行了# ----------------\#     print(p1.name)   #这样的组合 会先打印对象里的 然后再是主进程 然后是子进程 最后是孙子进程#     print('猪')    # xxxxxxxx    # 猪    # alex is piaoing    # alex is done    # 孙子运行了    # --------------    # p1.join()    # print('主')    #先打印子进程 然后就是孙进程 最后是主程序    # alex is piaoing    # alex is done    # 孙子运行了    # 主    # --------------------    # p1.terminate()  #杀死子进程  但是需要时间 马上打印的话 下边是活的    # print(p1.is_alive())   # 判断子进程是不是活着的    # ----------------    # p1.join(timeout=1)  # 超过1秒就不等他了    # print('主')    # -----------------------    #    # 进程池    # 提交 / 调用任务的方式有两种:    # 同步调用:提交 / 调用一个任务,然后就在原地等着,等到该任务执行完毕拿到结果,    # 再执行下一行代码    # 异步调用: 提交 / 调用一个任务,不在原地等着,直接执行下一行代码,结果?    # from multiprocessing import Process,Pool  这个是开启子进程 但是后期会不好用   # --------------------------------------

# from concurrent.futures import ProcessPoolExecutor    # #新式的开进程# import time, random,os# def piao(name):#     print('%s is piaoing %s' % (name, os.getpid()))   #   #获得进程的id的#     time.sleep(5)# if __name__ == '__main__':#     p = ProcessPoolExecutor(4)#     for i in range(10):#         p.submit(piao,'wang%s'%i)#     print('主程序',os.getpid())# 先打主程序,然后四个四个的打印 。

# from concurrent.futures import ProcessPoolExecutor# import time, random, os## def piao(name, n):#     print('%s is piaoing %s' % (name, os.getpid()))#     time.sleep(1)#     return n ** 2# if __name__ == '__main__':#     p = ProcessPoolExecutor(4)#     objs = []#     start = time.time()# for i in range(10):#     # res=p.submit(piao,'alex %s' %i,i).result() #同步调用#     # print(res)#     obj = p.submit(piao, 'alex %s' % i, i)  # 异步调用#     objs.append(obj)## for obj in objs:#     print(obj.result())#     stop = time.time()#     print(stop - start)# #     # 关门+等# #     # pool.close()# #     # pool.join()#     p.shutdown(wait=True)#     print('主', os.getpid())

转载于:https://www.cnblogs.com/xiaoluoboer/p/7941746.html

day 32 子进程的开启 及其用法相关推荐

  1. 32位XP开启直接支持4g内存

    32位XP开启直接支持4g内存 1. 首先还是必须确认CPU和主板支持PAE和memory remap/hole. 2. 到SYSTEM32下,复制 ntkrnlpa.exe 为 ntkrnl4g.e ...

  2. fork()创建子进程步骤、函数用法及常见考点(内附fork()过程图)

    1.fork()创建子进程详细步骤 2.fork()系统调用函数用法 一个现有进程可以调用fork函数创建一个新的进程. #include<unistd.h> pid_t fork(voi ...

  3. 子进程及时知道父进程已经退出的最简单方案

    [精彩] 子进程及时知道父进程已经退出的最简单方案? http://www.chinaunix.net 作者:yuonunix  发表于:2003-10-31 10:14:14 [发表评论] [查看原 ...

  4. linux中sed的基本用法,linux sed用法

    一.定义 sed 流编辑器,每次从输入中读取一行,用提供的编辑器命令匹配数据.按命令中指定的方式修改流中的数据,然后将生成的数据输出到STDOUT,在流编辑器将所 有命令与一行数据进行匹配后,它会读取 ...

  5. Format函数用法

    function Format(const Format: string; const Args: array of const): string; $[SysUtils.pas 功能 返回按指定方式 ...

  6. Delphi format的用法

    Format是一个很常用,却又似乎很烦的方法,找到一些资料,以供查询之用. 首先看它的声明: function Format(const Format: string; const Args: arr ...

  7. matlab中find()函数用法

    一.基本用法 返回矩阵或向量中非零元素的索引 注意:matlab中下标从1开始 举例: (1)向量 返回非零元素下标 find(vector) x=[1 2 3 0 0 6 7 8 9]; find( ...

  8. VC++中Format用法

    Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮助进行一些翻译,让它有一个完整的概貌,以供大家查询之用: 首先看它的声明: function Format(const Format ...

  9. Delphi Format函数功能及用法详解

    DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...

  10. python如何关闭multiprocess_python 开启进程两种方法 multiprocessing模块 介绍

    一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...

最新文章

  1. 什么是产品Backlog(Product Backlog)?
  2. TensorFlow 官方文档中文版发布啦(持续维护)
  3. echo -e 参数
  4. 《机器学习实战》chapter02 K-近邻算法(KNN)
  5. python爬虫取腾讯视频评论
  6. .NET 6新特性试用 | 总结:我最喜欢的5个特性
  7. css 修改文字基准线_css外部样式表怎么写
  8. 20200320:反转字符串中的元音字母(leetcode345)
  9. IBM语音识别能力逼近人类水平,获深度学习巨头Yoshua Bengio盛赞
  10. IDEA中Ctrl+Shift+f快捷键无效的解决方式
  11. python中eval函数怎么用_python3中eval函数用法简介
  12. asp毕业设计——基于asp+access的WEB网上留言板设计与实现(毕业论文+程序源码)——网上留言板
  13. 图论及其应用:第二次作业
  14. iOS:iOS开发非常全的三方库、插件等等
  15. tcgames使用有延迟_Tcgames下载使用方法
  16. 解构企业实名认证的几大「名场面」
  17. 携程React Native实践
  18. C语言及ARM中堆栈指针SP设置的理解与总结
  19. 8000字解读全域用户体验丨星巴克的尖刀与钝点
  20. 服务器hba卡安装系统,hba原理,raid卡,hba卡。

热门文章

  1. 弗洛伊德的人格结构说中潜意识,前意识,意识和自我,本我,超我的区别
  2. 手写输入---随手写
  3. vue 中获取屏幕尺寸
  4. md5加密依赖工具utility使用小记
  5. CvPoint及CvPoint2D32f
  6. This view is not constrained vertically: at runtime
  7. perf工具简介+火焰图制作与解读
  8. 规则引擎相关开源项目总结
  9. 深入解析设置磁盘写保护
  10. lv双肩包尺寸对照表_当红Monogram帆布LV双肩包尺寸究竟有多少?