世界热文:python中进程的几种创建方式
(资料图片)
在新创建的子进程中,会把父进程的所有信息复制一份,它们之间的数据互不影响。
1.使用os.fork()创建该方式只能用于Unix/Linux操作系统中,在windows不能用。
import os# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以pid = os.fork()# 子进程永远返回0,而父进程返回子进程的ID。if pid == 0: print("子进程")else: print("父进程")
2.使用Process类类创建multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:
from multiprocessing import Processimport time def test(name, age): for i in range(5): print("--test--%s\t%d" % (name, age)) time.sleep(1) print("子进程结束") if __name__ == "__main__": p = Process(target=test, args=("aaa", 18)) p.start() # 等待进程实例执⾏结束,或等待多少秒; p.join() # 等待的最长时间 print("主进程结束")"""输出结果:--test--aaa 18--test--aaa 18--test--aaa 18--test--aaa 18--test--aaa 18子进程结束主进程结束"""
join()方法表示主进程等待子进程执行完成后继续往下执行,如果把join()注释掉,则主进程开启子进程后不停顿继续往下执行,然后等待子进程完成程序结束。把join()方法注释掉的结果:
"""输出结果:主进程结束--test--aaa 18--test--aaa 18--test--aaa 18--test--aaa 18--test--aaa 18子进程结束"""
3.使用Process子类创建创建新的进程还能够使用类的方式,可以自定义一个类,继承Process类,每次实例化这个类的时候,就等同于实例化一个进程对象,请看下面的实例:
from multiprocessing import Processimport timeimport os class MyProcess(Process): def __init__(self): # 如果子类要重写__init__是必须要先调用父类的__init__否则会报错 # Process.__init__(self) super(MyProcess,self).__init__() # 学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441 # 重写Porcess的run()方法 def run(self): print("子进程(%s)开始执行,父进程(%s)" % (os.getpid(), os.getppid())) for i in range(5): print("--1--") time.sleep(1) if __name__ == "__main__": t_start = time.time() p = MyProcess() p.start() # p.join() print("main") for i in range(5): print("--main--") time.sleep(1)
4.使用进程池Pool创建当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。
初始化Pool时,可以指定一个最大进程数,当有新的请求提交到Pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求;但如果池中的进程数已经达到指定的最大值,那么该请求就会等待,直到池中有进程结束,才会创建新的进程来执行,请看下面的实例:
from multiprocessing import Poolimport osimport time def worker(num): # for i in range(3): print("----pid=%d num=%d---" % (os.getpid(), num)) time.sleep(1) if __name__ == "__main__": # 定义一个进程池,最大进程数3 pool = Pool(3) for i in range(10): print("---%d--" % i) # 使用非阻塞方式调用func(并行执行),一般用这个。 # apply堵塞方式必须等待上一个进程退出才能执行下一个进程,用的不多。 pool.apply_async(worker, (i,)) # 关闭进程池 pool.close() # 等待所有子进程结束,主进程一般用来等待 pool.join() # 进程池后面无操作时必须有这句
标签:
精彩推送
下周前瞻:6月PMI数据将公布,美欧英日央行行长同台论道,A股9只新股申购,解禁市值近1300亿元 全球要闻
根据截至目前的安排,下周暂有1只上市新股,为6月27日上市的天罡股份(
来源:2023.06.25
新闻快讯
X 关闭
X 关闭
新闻快讯
- 世界热文:python中进程的几种创建方式
- 安徽赛工环境装备有限公司_关于安徽赛工环境装备有限公司介绍_环球焦点
- 全球微头条丨9小时连夜奋战完成抢修 阳澄西湖隧道横截沟损坏
- 中科创达(300496.SZ):目前CMS电子外后视镜解决方案已搭载于国内外多款量产车型中
- 中国特供CPU跌至1399 来到史低价
- 无水氯化钙97%商品报价动态(2023-06-28) 今日聚焦
- 对照下人形机器人和AI,你会发现什么?
- 曾连续空难致346人丧生 波音中国总裁:中国737 MAX约90%恢复运营|今日报
- 北京农商银行金融“活水”润泽小微企业“首贷”苗 世界观察
- 天天观焦点:江北:多部门联合开展幼托机构安全管理检查工作
- 全球焦点!“播客视频化”潮流正起,声音营销拓展新边界?
- 四川汶川山洪泥石流灾害搜救工作仍在进行,未发现3名失联人员
- 【热闻】中国海军第43批护航编队圆满结束对科特迪瓦友好访问
- 吡罗克酮乙醇胺盐(罗克:C罗发布会呛声记者)-新动态
- 《英雄联盟》斗魂竞技场(2v2v2v2 模式)玩法公布,预计下月上线-天天快讯
- 焦点!宜春有个“小上海”,古井水温常年六七十度,当地人的寿命都很高
- 涨停雷达:传媒个股异动 中广天择触及涨停
- 每日视讯:国际出版合作交流研发中心成立:为国际出版合作注入新动力、激发新活力
- 【全球报资讯】二建成绩查询2023
- 每日速讯:华西证券:给予新雷能增持评级
- 中一科技:6月27日融券净卖出9493股,连续3日累计净卖出3.67万股
- 安联锐视:目前未参与华为盘古大模型CV视觉模型业务
- 短讯!胡锡进入市第一天赚104元 股市赚钱这么容易吗?投资者能学到啥?
- 【热闻】玉渊谭天丨超直观!一图梳理美台军事勾连如何毁台
- 2023年6月28日一甲胺水溶液价格最新行情预测 每日速递
- 景嘉微6月28日快速回调
- 台湾娱乐圈丑闻接连爆雷,我们看到是否只是冰山一角 快报
- 教育部:严打暑期隐形变异类校外培训
- 120万元一针 细胞治疗成本高在哪
- 工人日报社评丨留住出行“慢选项”,不妨多些探索与实践-头条焦点
- 每日看点!减肥吃什么蔬菜瘦得快_减肥吃什么蔬菜
- 研学游价格“虚高”最令家长反感
- 世界快看:建龙微纳(688357):6月27日北向资金增持4.41万股
- 这年代还有人去电脑城?我朋友去买了台笔记本,被坑了两千块
- 哪里还可以买到香邂格蕾(香邂格蕾是什么牌子)
- 每日焦点!月销3458辆,曾经被吐槽“杂牌”的宝马i3,忽然逆天改命了?
- 世界热点!助力乡村振兴 四川涉农贷款余额达2.69万亿元
- 家电行业“6.18”促销季冷热不均 估值有望修复?
- 当前聚焦:近四成非连锁烟火小店登上大众点评2023“必吃榜”
- 飞机起飞前多久停止安检行李_飞机起飞前多久停止安检
- 热讯:【OFweek维科杯】思谷智造参评卓越光伏‘智造’企业”
- TCL推出第二代Tab 10平板电脑:配备10.36英寸屏幕,支持4G网络 天天播报
- 俄罗斯撤销针对普里戈任的刑事立案|世界实时
- 焦点快看:试驾百万级的“奥迪”:没有缺点,豪华旗舰轿车就应该是这样的
- 首批三只央企现代能源ETF获批 发行期预计七月上旬
- 焦点热门:韩国将启用周岁计龄法 多数人将变“年轻”
- 世界速讯:Windows10下如何配置git免密码clone远程ssh主机上的代码项目
- 西部矿业:选举杜世红为公司第七届监事会职工代表监事-全球新动态
- 中国铂金交易量2022年创历史新高
- 手机微信如何恢复删除的聊天记录_全球焦点