0
  import subprocess
  subprocess.Popen(['C:\Program Files\Nuke6.1v3\\Nuke6.1.exe', '-t', 'C:\Users\user\Desktop\\server.py'

現在、これを使用してserver.pyを呼び出しています。これは次の方法でセットアップされています

import sys
import os
import distutils
import shutil
import nuke

def imageScale(source,destination,scale):
    myRead = nuke.createNode("Read")
    #SET VALUES
    myRead["file"].setValue(source)
    myRead["selected"].setValue(True)
    #CREATE REFORMAT
    myReformat = nuke.createNode("Reformat")
    #SET VALUES
    myReformat["type"].setValue("scale")
    myReformat["scale"].setValue(scale)#.75)
    #SELECTION
    myRead["selected"].setValue(False)
    myReformat["selected"] .setValue(True)
    #CREATE WRITE
    myWrite = nuke.createNode("Write")

    #SET VALUES
    myWrite["file"].setValue(destination)
    myWrite["file_type"].setValue("png")
    myWrite["channels"].setValue("rgba")
    myWrite["name"].setValue("temp")
    nuke.execute("temp",1,1,1)

subprocess.popen を使用して引数を imageScale 関数に渡すことはできますか。つまり、サブプロセスから引数のソース、宛先、およびスケールを直接渡します。

4

2 に答える 2

2

簡単な答えはイエスです。server.py の sys.argv から引数を読み取りたいとします。

ただし、Python関数があり、Pythonから呼び出すことがわかっている場合は、

import multiprocessing
import server

p = multiprocessing.Process(target=server.imageScale, args=(source,destination,scale))
p.start()
p.join()

より美的であることは別として、開始から参加までの間に他のことを自由に行うことができます。

編集: 実際には、Nuke が引数を使用して正しいことを行うと想定しているだけです。そうなる保証はないので、その理由からもおそらく 2 番目の戦略の方が優れているでしょう。

于 2012-07-12T19:48:52.423 に答える
0

subprocessプロセスを実行し、引数とパイプを使用して新しいプロセスと通信できるようにするだけで、他に何もできません。それを達成したい場合は、親プログラムと通信してimageScale()関数を呼び出すためのラッパーが必要です。

于 2012-07-12T19:48:43.677 に答える