一个 py 文件怎么同时启动两个服务?用命令行

2018 年 12 月 4 日
 kidlfy

str_one=('python app.py --port=8099') str_two=('python app.py --port=8098') os.system(str_one) os.system(str_two)

这样写只会启动一个。是因为只 fork 了一个子进程 然后等待它结束 再往下运行 有什么办法同时运行两句命令启动两个服务呢

谢谢

3471 次点击
所在节点    Python
12 条回复
zh826256645
2018 年 12 月 4 日
用 nohup 试试?或者 Supervisor
d0m2o08
2018 年 12 月 4 日
搜 python threading
clino
2018 年 12 月 4 日
此时不能用 os.system ,因为退出才返回
可以用 os.popen 试试
wwqgtxx
2018 年 12 月 4 日
popen 呀,另外不要用楼上说的 os.popen,那个已经被标记为过时的了,平时用 popen 模块
xpresslink
2018 年 12 月 4 日
要开多进程才行

import subprocess
subprocess.Popen(str_one)
subprocess.Popen(str_two)
kidlfy
2018 年 12 月 4 日
@xpresslink 它会报 没有这个文件 的错误 但是 os.popen 就可以直接执行
www5070504
2018 年 12 月 4 日
@kidlfy 试试用绝对路径 另外参数加上 shell=True
kidlfy
2018 年 12 月 4 日
@www5070504 对, 可以了 谢谢 另外 你知道怎么关闭文件的时候 kill 掉所有的子进程吗 只能手动吗
www5070504
2018 年 12 月 4 日
@kidlfy 注册信号处理函数 在 signal 库里 可以调用子进程对象的 kill 方法
www5070504
2018 年 12 月 4 日
@kidlfy 或者记录子进程的 pid 用 os.kill() 前一种方法比较好一些但是说实话业务写完一般都得手动退出 多进程很容易出现不能完全退出的情况...
xmoiduts
2018 年 12 月 4 日
能用 & 吗
python ………… &
xpresslink
2018 年 12 月 4 日
@kidlfy 你加个绝对路径还不会么?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514228

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX