繁体   English   中英

在Python中将进程作为子进程启动

[英]Starting a process as a subprocess in Python

我正在编写一个使用以下代码的使用多个工作进程(预分叉模型)的程序。

from  multiprocessing import Process
for i in range(0,3):
    Process(target=worker, args=(i,)).start()

我使用Windows。 我注意到,当我希望它们作为子流程启动时,它们作为单独的流程运行。 如何使它们成为主流程的子流程?

我不愿意使用子流程模块,因为它似乎适合运行外部流程(就我所使用的而言)。


更新 :Windows似乎不会将新进程作为子进程启动。 Python在Windows中不支持getppid()(获取父代的PID)。

您似乎在这里混淆术语。 子流程一个单独的流程。 所创建的将是处理儿童程序的主要过程,在这个意义上是子进程。 如果要使用线程,请使用multithreading而不是multiprocessing ,但请注意,Python不会对多个线程使用多个内核/ CPU。

我不愿意使用subprocess模块,因为它似乎适合运行外部流程

对不起,我不明白这句话。

墙子流程是什么? 对我来说,它们是您主要流程的子流程。 这是我的示例并返回了输出。

import time, os
from  multiprocessing import Process

def worker():
    print "I'm process %s, my father is %s" % (os.getpid(), os.getppid())

print "I'm the main process %s" % os.getpid()
for i in range(0,3):
    Process(target=worker).start()

输出为:

I'm the main process 5897
I'm process 5898, my father is 5897
I'm process 5899, my father is 5897
I'm process 5900, my father is 5897

您有3个子流程附加到主流程...

简短答案: http : //docs.python.org/library/threading.html

更长:我不明白这个问题,艾奇纽。 在典型的Unix模型中,一个进程只能启动子进程子进程。 我有一种强烈的感觉,我们两个人之间存在词汇冲突,我不知道该如何去解决。 您似乎在想一个“内部过程”。 在任何语言或操作系统中,这是一个例子吗?

我可以证明Python的子流程模块已被广泛使用。

您编写了“ ...多个工作线程...”,您是否阅读过此响应顶部第一行中提到的文档?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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