繁体   English   中英

Python中的子进程Popen函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM