Zwei Funktionen in ihren eigenen Prozessen ausführen und eine beendenPython

Python-Programme
Anonymous
 Zwei Funktionen in ihren eigenen Prozessen ausführen und eine beenden

Post by Anonymous »

Ich habe ein Setup, um einen Render auszuführen und die Workload in der GPU in Python zu messen, wobei ich zwei Funktionen verwendete, die ich unabhängig das Multiprocessing -Modul zum Starten ausführte. Ich muss jedoch einen voneinander enden, damit ich das von subprocess.popen () global zurückgegebene Objekt speichere:

Code: Select all

import os
import multiprocessing
import subprocess

nvidia_cmd = None

blender_cmd_to_run = '/home/mickey/dev/blender-4.2.1-linux-x64/blender -b /home/mickey/dev/elastic_shared_memory/benchmark_scenes/bmw27/bmw27.blend -f 10 -- --cycles-device CUDA'
nvidia_cmd_to_run = 'nvidia-smi --query-gpu=gpu_bus_id,memory.used --format=csv -l 1'

def run_blender():
blender_cmd = subprocess.Popen(blender_cmd_to_run, shell=True, stdout=subprocess.PIPE)
for line in blender_cmd.stdout:
print(line.decode().strip())
nvidia_cmd.terminate()

def run_nvidia():
global nvidia_cmd
nvidia_cmd = subprocess.Popen(nvidia_cmd_to_run, shell=True, stdout=subprocess.PIPE)
for line in nvidia_cmd.stdout:
print(line.decode().strip())

if __name__ == '__main__':
blender_process = multiprocessing.Process(target=run_blender)
nvidia_process = multiprocessing.Process(target=run_nvidia)

nvidia_process.start()
blender_process.start()
Wenn jedoch die Funktion von Blender_process endet, erhalte ich einen Fehler mit dem Termin -Aufruf:
AttributeError: 'NoneType' object has no attribute 'terminate'
< /code>
Aber warum? Ich speichere den Wert, sobald der andere Befehl gestartet wird. Was fehlt ich?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post