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()
AttributeError: 'NoneType' object has no attribute 'terminate'
< /code>
Aber warum? Ich speichere den Wert, sobald der andere Befehl gestartet wird. Was fehlt ich?