使用控制台

时间:2015-06-18 09:08:43

标签: python process

我在python中有一个带参数的函数。在同一个文件中我称之为该函数(称之为foo )。在python中是否有任何方法( for Win7 )我可以从父进程创建不同的独立进程,每个进程使用不同的参数集执行foo(显然也独立于父进程)? 控制台是否也可以附加到这些流程上?

PS:我知道如果它是一个单独的脚本或exe,那么我们可以使用 Popen.subprocess()模块。但这里的问题是将函数(代码)分配给不同的进程(彼此独立以及父进程独立)。

这是功能。

import subprocess
import os
import string
def add(x,y):
     return x+y

这是输入文件:

1 2
3 4
5 6

现在,如果函数是在一个单独的文件(add.py)中编写的,我们可以直接使用 subprocess.Popen()为输入文件中的每组参数调用“add.py”。但是,如果函数与主文件写在同一个文件中,那么如何从显示的输入文件中为每组参数分配一个新进程? 我无法使用 fork(),因为Windows没有。

1 个答案:

答案 0 :(得分:1)

是的,你可以。 我不会自己选择这条路,但这是可能的。 这有时称为分离进程或守护进程。

存在更好的守护程序实现,但使用此基本思想可以实现:

import subprocess
import sys

print "runMe started"
print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

def runMeAsChild(args):
    if args is None or len(args) == 0:
        args = []
        args.append("stop")
    cmd = "start cmd /k python " + sys.argv[0]+ " " + " ".join(args)
    proc = subprocess.Popen(cmd, shell=True, stdin=None, stdout=None, stderr=None, close_fds=True)

if len(sys.argv) == 1:
    runMeAsChild(["test"])
    runMeAsChild(["once", "again"])

如果您希望控制台在执行后自动关闭,请在cmd字符串中使用/c而不是/k