day 32 子进程的开启 及其用法
开启两种子进程的两种方式
# # # 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 子进程的开启 及其用法的更多相关文章
- MySQL做为手动开启事务用法
START TRANSACTION;INSERT INTO `t1` (t, t1) VALUES('124', NOW());ROLLBACK;COMMIT;
- Python开启进程的2中方式
知识点一:进程的理论 进程:正在进行的一个程序或者说一个任务,而负责执行任务的则是CPU 进程运行的的三种状态: 1.运行:(由CPU来执行,越多越好,可提高效率) 2.阻塞:(遇到了IQ,3个里面可 ...
- python 开启进程两种方法 multiprocessing模块 介绍
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进 ...
- Delphi Format函数功能及用法详解
DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...
- python 子进程
1.线程的介绍(理论部分) 1.1 进程线程分工 我们之前讲运行一个py文件,就是开启了一个进程,在内存中开辟一个进程空间,将必要的数据加载到这个进程空间,然后cpu在去调用这个进程的主线程去执行具体 ...
- linux实训
目 录 Unit 1 操作系统安装.... 3 1.1 多操作系统安装... 3 1.1.1 VMware简介... 3 1.1.2 VMWare基本使用... 4 1.2 安装Red Hat Li ...
- C++Windows核心编程读书笔记
转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔 ...
- python_11(网络编程)
第1章 ucp协议 1.1 特性 1.2 缺陷 1.3 UDP协议实时通信 第2章 socket的更多方法 2.1 面向锁的套接字方法 2.1.1 blocking设置非阻塞 2.1.2 Blocki ...
- 【转】《windows核心编程》读书笔记
这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和Windows实际机制可能有出入 ...
随机推荐
- 日期在Linux与Windows下的区别
最近遇到了这个问题,就是相同的代码在Windows与Linux下的日期转换不一致. 原因:时区问题,主要是操作系统与JVM中的时区不同导致的 在网上查了很多处理的方法:最后总结出一条简单粗暴的方法:原 ...
- 【微信公众号开发】【13】批量导出公众号所有用户信息到Excel
前言: 1,一次拉取调用最多拉取10000个关注者的OpenID,当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求 2,获取OpenID列表后 ...
- oracle 基本操作--事务
事务:可以看做是由对数据可的若干操作组成的一个单元,浙西操作要么都完成,要么都取消,从而保证数据满足一致性的要求. 事务的组成: 一条或者多条DML 一条DDL 一条DCL DML语句需要使用comm ...
- python-day79--知识回顾
内容回顾: 1. 可迭代对象.迭代器.生成器是什么?什么区别? 可迭代对象,含有__iter__,返回一个迭代器 迭代器,含有__iter__,__next__方法 生成器,yield,__next_ ...
- php缓存机制
1.全页面静态化缓存 <?php ob_start();//如果php.ini已经开启,那么这里会开启一个新的输出缓冲区; echo "<!DOCTYPE html>< ...
- Leetcode 860. 柠檬水找零
860. 柠檬水找零 显示英文描述 我的提交返回竞赛 用户通过次数187 用户尝试次数211 通过次数195 提交次数437 题目难度Easy 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾 ...
- InnoDB支持的最大事务数量
Innodb存储引擎有rollback segment,每个rollback segment中记录了1024个undo log segment,在每个undo log segment中进行undo页的 ...
- jetty安装教程
jetty是一个类似tomcat的应用服务器,:较tomcat少些JEE的扩展所以比tomcat还再轻量一些. 1.下载 各版本下载链接:http://central.maven.org/maven2 ...
- spark使用正则表达式读入多个文件
String dir = "s3a://example/";String currentDir = dir + "{1[5-9],2[01]}/*.txt";J ...
- CSS多div放一行
HTML代码 <body> <div class="right"></div> <div class="left"&g ...