开启两种子进程的两种方式
# # # 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. hammer.js方法总结(只做了一个简单的demo)

    html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  2. php 常用设计模式demo

    <?php//__get()//__set()当对象中属性不存在时调用该魔术方法//__call()当对象中方法不存在时//__callStatic()静态方法//__string()当对象不能 ...

  3. 邂逅明下 HDU - 2897

    Problem description: 有三个数字n,p,q,表示一堆硬币一共有n枚,从这个硬币堆里取硬币,一次最少取p枚,最多q枚,如果剩下少于p枚就要一次取完.两人轮流取,直到堆里的硬币取完,最 ...

  4. Sonya and Matrix CodeForces - 1004D (数学,构造)

    http://codeforces.com/contest/1004/problem/D 题意:网格图给定到中心点的曼哈顿距离数组, 求该图n,m及中心点位置 首先可以观察到距离最大值mx一定在某个角 ...

  5. 廖雪峰网站:学习python函数—递归函数(四)

    # 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact ...

  6. git回退代码到某次commit

    回退命令: $ git reset --hard HEAD^ 回退到上个版本 $ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前 $ git res ...

  7. python-day74--知识总体总结

    1. 课程介绍        - 数据类型        - 函数        - 面向对象三大特性:继承,封装,多态        - socket:本质传输字节:所有网络通信都基于socket  ...

  8. Leetcode 150

    class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; ;i < ...

  9. WDA基础九:BusinessGraphics

    好像很少有人用这玩意...好难玩,好废...和ABAP的那个图一样废.... 很多报表都是用BO,BI什么做的,不仅废,而且很多BO顾问不懂代码,写出来的报表挫的要死.... WDA的网页图形报表分析 ...

  10. Zookeeper浏览器工具和Eclipse插件

    公司很多产品会使用zookeeper,比如Meta消息中间件,在测试的过程中,我们经常需要查询zookeeper里面的信息来精确定位问题.目前项目中有开发团队自己写的浏览器node-zk-browse ...