python启动进程有很多方式,有阻塞类型的和非阻塞类型的。使用subprocess中的Popen会以非阻塞形式来启动进程,而subprocess中的call会以阻塞方式来运行,下面是我写的一个启动python文档查看器后自动启动浏览器的脚本
#coding=utf-8
__doc__ = '''
打开python的标准文档,并启动浏览器浏览
'''
from subprocess import call,Popen
import pydoc
import time
import os
#配置选项
PORT = 9999
JZ_BROWSER = r'C:\Users\Administrator\AppData\Roaming\hao123JuziBrowser\hao123Juzi.exe'
def start_browser(doc_server):
cmd = '%s %s' %(JZ_BROWSER, 'http://localhost:%d' % (PORT,))
#不可以直接使用shell.call,会阻塞进程,从而导致无法服务
#call(cmd, shell = False)
#os.popen(cmd)
Popen(cmd)
print('Document start working....')
pydoc.serve(PORT, callback = start_browser)