开启两种子进程的两种方式
# # # 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())

day 32 子进程的开启 及其用法的更多相关文章

  1. MySQL做为手动开启事务用法

    START TRANSACTION;INSERT INTO `t1` (t, t1) VALUES('124', NOW());ROLLBACK;COMMIT;

  2. Python开启进程的2中方式

    知识点一:进程的理论 进程:正在进行的一个程序或者说一个任务,而负责执行任务的则是CPU 进程运行的的三种状态: 1.运行:(由CPU来执行,越多越好,可提高效率) 2.阻塞:(遇到了IQ,3个里面可 ...

  3. python 开启进程两种方法 multiprocessing模块 介绍

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

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

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

  5. python 子进程

    1.线程的介绍(理论部分) 1.1 进程线程分工 我们之前讲运行一个py文件,就是开启了一个进程,在内存中开辟一个进程空间,将必要的数据加载到这个进程空间,然后cpu在去调用这个进程的主线程去执行具体 ...

  6. linux实训

    目  录 Unit 1 操作系统安装.... 3 1.1 多操作系统安装... 3 1.1.1 VMware简介... 3 1.1.2 VMWare基本使用... 4 1.2 安装Red Hat Li ...

  7. C++Windows核心编程读书笔记

    转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...

  8. python_11(网络编程)

    第1章 ucp协议 1.1 特性 1.2 缺陷 1.3 UDP协议实时通信 第2章 socket的更多方法 2.1 面向锁的套接字方法 2.1.1 blocking设置非阻塞 2.1.2 Blocki ...

  9. 【转】《windows核心编程》读书笔记

    这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入 ...

随机推荐

  1. Confluence 6 如何考虑设置一个空间的主页

    这空间是干什么的?空间主页是访问你空间的用户最先看到的页面.如果你在这个页面中包含一些你空间是干什么的内容能够帮助你的用户更加容易的访问你的空间,同时也能够让你的用户更加容易了解你正在工作的事情.你可 ...

  2. scrapy 爬虫框架(一)

    一 . scrapy 的安装 安装scrapy框架时,需要先安装依赖包. #Linux: pip3 install scrapy #Windows: a. pip3 install wheel b. ...

  3. 【模板/经典题型】树上第k大

    直接对树dfs一发,对每个节点建出主席树. 查询的时候主席树上二分,四个参数x+y-lca(x,y)-fa[lca(x,y)]. 如果要求支持动态加边的话,只需要一个启发式合并即可,每次暴力重构主席树 ...

  4. python基础之数据类型操作补充,集合及其操作,深浅拷贝

    内容概要: 数据类型操作补充 集合及其操作 深浅拷贝1.基础数据类型补充 1.1字符串的操作补充li = ["李嘉诚", "麻花藤", "黄海峰&qu ...

  5. dijkstra优化

    1, 桶优化最短路, 时间复杂度$O(m+n)$, 空间$O(C)$, $C$为最短路长度 const int N = 1e6+10; int n, m; struct _ {int to,w;}; ...

  6. IntelliJ IDEA的调试方法

    快捷键F9          resume programe       恢复程序 Alt+F10       show execution point    显示执行断点 F8          S ...

  7. 如何改变输出方式(让printf输出结果保存到TXT文本中)

    查阅相关资料,汇总如下: #include <stdio.h> #include <stdlib.h> int main() { char money= 's'; char a ...

  8. jquery 表单提交不用action

    1.今天我做完事去看了一下别人的代码,不用我们很常规的写法.我想让我们来学习一下吧! <form class="form-inline form-mess">//内容在 ...

  9. java中equals与==的比较

    总结来说: 1)对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等: 如果作用于引用类型的变量,则比较的是所指向的对象的地址 2)对于equals方法,注意:equals方法不 ...

  10. X-Window/GNOME/KDE的关系

    名称 开发者 开发年份 许可证 语言 说明 X-Window MIT 1984     X-Window是一个C/S架构的桌面框架,KDE和GNOME都是其基础上的具体实现 KDE Trolltech ...