/ / Python subprocess.call blokovanie - python

Python subprocess.call blokovanie - python

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ď č. 1

Kó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 Popenzavolaj 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.