[英]Subprocess Popen function in Python
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函数,即我直接从子进程传入参数source,destination和scale
简短的回答是肯定的。 您想从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将使用参数做正确的事情。 不能保证会这样,所以第二种策略也可能更好。
subprocess
只执行一个进程并允许使用参数和管道与新进程进行通信,它不能做任何其他事情。 如果要实现这一点,则需要使用包装器与父程序通信并调用imageScale()
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.