文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 进程

2023-01-31 02:54

关注

#fork在window下不支持

import os
import time
import sys 

pid = os.fork()
if pid == 0:#子进程
        time.sleep(5)
        print('After 5 seconds')
        print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))
else:#主进程
        print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))
        pid = os.fork()
        if pid == 0:
                print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))
        else:
                print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))
pid = os.fork()
if pid == 0:
        print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))
else:
        print('line%d:fork进程%d,PID=%d,父PID=%d'%(sys._getframe().f_lineno,pid,os.getpid(),os.getppid()))

line11:fork进程1625,PID=1624,父PID=1486

line16:fork进程1626,PID=1624,父PID=1486

line14:fork进程0,PID=1626,父PID=1624

line21:fork进程1628,PID=1626,父PID=1624

line21:fork进程1627,PID=1624,父PID=1486

line19:fork进程0,PID=1627,父PID=1624

[chaoge@localhost ~]$ line19:fork进程0,PID=1628,父PID=1

After 5 seconds

line9:fork进程0,PID=1625,父PID=1

line21:fork进程1629,PID=1625,父PID=1

line19:fork进程0,PID=1629,父PID=1625


#Process 可以跨平台

微信截图_20180107170448.png

from multiprocessing import Process
import time
import os

#子进程
def childProcess(name):
	print("子进程运行中,name=%s,pid=%d"%(name,os.getpid()))
	


if __name__ == '__main__':
	print('父进程%d.'%os.getpid())
	cp = Process(target=childProcess,args=('test',))
	print('子进程将要执行')
	cp.start()#启动进程实例
	#cp.terminate()#终止子进程
	alive = cp.is_alive()#判断进程是否活着
	print('is_alive:%s'%alive)
	cp.join()#阻塞,join([timeout]),join(2)阻塞2秒
	print('子进程结束')
	alive = cp.is_alive()#判断进程是否活着
	print('is_alive:%s'%alive)

父进程7268.

子进程将要执行

is_alive:True

子进程运行中,name=test,pid=3124

子进程结束

is_alive:False


#进程池

from multiprocessing import Pool
import os,time,random

def worker(msg):
	t_start = time.time()
	print('%s开始执行,进程号为%d'%(msg,os.getpid()))
	#random.random() 随机生成0~1之间的浮点数
	time.sleep(random.random()*2)
	t_stop = time.time()
	print(msg,"执行完毕,耗时%0.2f"%(t_stop-t_start))

if __name__ == '__main__':
	po = Pool(3)#定义一个进程池,进程数3
	for i in range(0,10):
		po.apply_async(worker,(i,))#po.apply_async(worker,(i,))非阻塞模式,po.apply(worker,(i,))阻塞模式	
	print("---start---")
	po.close()#关闭进程池
	po.join()#等待po中的所有子进程执行完,放在close之后
	print('---end---')

---start---

0开始执行,进程号为1910

2开始执行,进程号为1912

1开始执行,进程号为1911

0 执行完毕,耗时0.49

3开始执行,进程号为1910

1 执行完毕,耗时0.64

4开始执行,进程号为1911

3 执行完毕,耗时0.26

5开始执行,进程号为1910

2 执行完毕,耗时1.28

6开始执行,进程号为1912

4 执行完毕,耗时0.97

7开始执行,进程号为1911

5 执行完毕,耗时1.38

8开始执行,进程号为1910

6 执行完毕,耗时1.49

9开始执行,进程号为1912

8 执行完毕,耗时1.21

7 执行完毕,耗时1.81

9 执行完毕,耗时1.72

---end---


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯