我在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没有。
答案 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