OS Python的多: - Mac OSX上
的Python没有锁定父进程
我是新与蟒蛇多处理。对于我的应用程序,我想从main打开一个新进程并运行它,而不锁定主进程。例如。我正在运行进程A,现在我需要从A打开一个新应用程序,我们称它为进程B.我想打开B,以便它不会阻止进程A,并且仍然从进程中我应该能够停止每当我希望的过程。
直到现在无论我试过的代码是基本的,它们锁定了过程A.因此我无法实现它。有没有解决方法可以做到这一点?
我读了关于fork和spawn,但无法理解如何使用它来打开应用程序。我也尝试过线程。但没有成功。谁能告诉我,我该怎么做?
目前我使用subprocess.call()通过Python打开Mac应用程序。 这将是非常有益的。
编辑: -
I tried the accepted answer of this link 但无济于事。因为它会阻止终端,一旦我们手动关闭应用程序,它将退出输出0.
此外我已经尝试过这种solution。它也会这样做。我想让调用进程不被被调用进程阻塞。
同时在windows中使用os.system()完成同样的任务时,给了我我想要的东西。但我不知道我怎么能在Mac上做到这一点。
编辑2:CODE
模块1:
import subprocess
def openCmd(name):
subprocess.call(["/usr/bin/open", "-W", "-n", "-a", "/Applications/"+name+".app"])
def closeCmd(name):
subprocess.call(['osascript', '-e', 'tell "'+name+'" to quit'])
主要模块:
import speech_recognition as sr
import pyttsx
import opCl
speech_engine = pyttsx.init('nsss')
speech_engine.setProperty('rate', 150)
OPEN_COGNATES=['open']
CLOSE_COGNATES=['close']
def speak(text):
speech_engine.say(text)
speech_engine.runAndWait()
re = sr.Recognizer()
def listen():
with sr.Microphone() as source:
re.adjust_for_ambient_noise(source)
while True:
speak("Say something!")
print ">>",
audio = re.listen(source)
try:
speak("now to recognise it,")
value=re.recognize_google(audio)
print (value)
speak("I heard you say {}".format(value))
value=value.strip().split()
name=" ".join(value[1:])
if value[0] in OPEN_COGNATES:
speak("opening "+name)
opCl.openCmd(name)
pass
elif value[0] in CLOSE_COGNATES:
speak("opening "+name)
opCl.closeCmd(name)
pass
else:
pass
except sr.UnknownValueError as e:
speak("Could not understand audio")
print ('Could not understand audio')
except sr.RequestError as e:
speak("can't recognise what you said.")
print ("can't recognise what you said")
if __name__=='__main__':
listen()
@stovfl我编辑的问题。我希望现在它可以帮助。 –
我希望现在可以运作@stovfl –