Snažím sa spustiť externú aplikáciu vPython s subprocess.call. Z toho, čo som "čítal som to subprocess.call isn" t má blokovať, ak zavoláte Popen.wait, ale pre mňa je to blokovanie, kým externé aplikácie opustí. Ako to opravím?
odpovede:
-1 pre odpoveď č. 1Kód v subprocess
je vlastne celkom jednoduché a čitateľné. Stačí vidieť 3.3 alebo 2.7 verziu (podľa potreby) a môžete povedať, čo robí.
Napríklad, call
vyzerá takto:
def call(*popenargs, timeout=None, **kwargs):
"""Run command with arguments. Wait for command to complete or
timeout, then return the returncode attribute.
The arguments are the same as for the Popen constructor. Example:
retcode = call(["ls", "-l"])
"""
with Popen(*popenargs, **kwargs) as p:
try:
return p.wait(timeout=timeout)
except:
p.kill()
p.wait()
raise
Môžete robiť to isté bez volania wait
, Vytvor Popen
zavolaj wait
na to, a to je presne to, čo chcete.
5 pre odpoveď № 2
Čítate dokumenty zle.
subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
Spustite príkaz opísaný args. Počkajte na dokončenie príkazu a potom vráťte atribút returncode.