python - 使用控制台在 python Windows 中创建进程

标签 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 的工具。

最佳答案

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

存在更好的守护进程实现,但基本思想可以用这个实现:

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

关于python - 使用控制台在 python Windows 中创建进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30911076/

相关文章:

java - 启动Chrome,然后等待其关闭

servlets - Servlet 中的后台进程

c# - 如果使用不同的用户凭据,为什么 Process.Start 会抛出 Win32Exception?

python - 用Python在手机和服务器之间发送彩信的API?

linux - 进程组必须有一个正在运行的领导进程吗?

windows - 关于进程地址空间中的 NULL-Pointer Assignment Partition 的问题

Python:如何格式化固定宽度的数字?

php - Django 唯一 URL 重定向问题

python - 使用 Python 3.6 在运行时获取类的通用类型

c++ - 创建多个主窗口