python非阻塞启动进程

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)


你可能感兴趣的:(python,pydoc)