python 使用多进程打开多个cmd窗口,并在子进程结束之后关闭cmd窗口

额,我想表达的是使用os.system()打开另一个可执行文件,然后等待其结束,关闭cmd窗口

主要是我突发奇想想装逼;

如果只是用multiprocessing库的多进程,然后输出信息的话,根本没法看好吧,乱成一团.重定向就更不行了,我的目的就是要(zhuang)看(bi)嘛;

os.system()是打开一个新的窗口来运行可执行文件

用os.popen()是在当前的窗口执行命令(我从效果来看是这样的.)

我把子进程的主要执行代码封装成了一个模块,叫get_content.py.

py文件肯定要用python.exe来运行涩.模块只是一个子进程,父进程必须传参,不然要子进程干啥.

所以我最终传过去命令行字符串是: start /wait cmd.exe @cmd /k python get_content.py '+path+' '+book_name+' '+str(index)+' '+str(os.getpid());

后面的什么path,index都是参数,只不过每次都要变,就不写具体值了.

因为python要用cmd运行,所以前面加了cmd,但是不要start /wait的话就不能打开新窗口了.所以start /wait是装逼的关键, /wait参数是让父进程等待子进程结束.

然而很不幸,这条命令下去之后在不人为干预的情况下父进程永远等不到子进程结束的那天.

实际上这条命令下去之后创建了多个(4)子进程,形成了父→子→孙→孙这样一个进程链.

就这样:

 

为什么说是四个,首先start打开新窗口,在运行cmd,之后再有python,再有我封装的可执行文件,如果不关闭cmd,name当我的可执行文件执行完之后,python.exe,cmd.exe会一直运行.一直占用资源.

怎么结束呢,还是用os模块的函数,不过我这次用的popen();

#杀掉父进程,加-f强制结束

os.popen('taskkill.exe /pid '+str(os.getppid())+' -f');

#自杀

#os.popen('taskkill.exe /pid '+str(os.getpid()));

os.popen('exit.exe');

这样就ok.

设计道德原因,爬虫代码不公开.

转载于:https://www.cnblogs.com/love-DanDan/p/10789121.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值