pangloss
pangloss

Reputation: 83

multiprocessing.Process subprocess.Popen completed?

I have a server that launches command line apps. They receive a local file path, load a file, export something, then close.

It's working, but I would like to be able to keep track of which tasks are active and which completed.

So with this line: p = mp.Process(target=subprocess.Popen(mayapy + ' -u ' + job.pyFile), group=None)

I have tried 'is_alive', and it always returns False.

The subprocess closes, I see it closed in task manager, but the process and pid still seem queryable.

Upvotes: 1

Views: 1343

Answers (1)

unutbu
unutbu

Reputation: 879401

Your use of mp.Process is wrong. The target should be a function, not the return value of subprocess.Popen(...).

In any case, if you define:

proc = subprocess.Popen(mayapy + ' -u ' + job.pyFile)

Then proc.poll() will be None while the process is working, and will equal a return value (not None) when the process has terminated.


For example, (the output is in the comments)

import subprocess
import shlex
import time
PIPE = subprocess.PIPE

proc = subprocess.Popen(shlex.split('ls -lR /'), stdout=PIPE)
time.sleep(1)
print(proc.poll())
# None

proc.terminate()
time.sleep(1)
print(proc.poll())
# -15

Upvotes: 2

Related Questions