父进程等待子进程结束

from multiprocessing import  Process
import time

# def task(name):
#     print("%s start" % name)
#     time.sleep(3)
#
#     print("%s stop" % name)
#
# if __name__ == ‘__main__‘:
#     p = Process(target=task,args=("jerry",))
#     p.start()
#     p.join(3)   #父进程必须等到子进程完成后才能继续执行  可设置等待超时时间
#     print("我是主进程!!!")

#——————————————————————————————————————-

def task(i):
    print("%s start" % i)
    # time.sleep(2)
    # print("%s stop" % i)

if __name__ == ‘__main__‘:
    for i in range(1,11):   #开启多个子进程
        p = Process(target=task,args=(i,))
        p.start()
    print("主进程!!!!")

# for i in range(1,11): 等同于下面:
#     p1=Process(target=task,args=(1,))
#     p2=Process(target=task,args=(2,))
#     p3=Process(target=task,args=(3,))
#     p1.start()
#     p2.start()
#     p3.start()

#———————————————————————————————————————

# 我们的代码只负责 通知操作系统创建进程  创建完就继续其他代码
# 但是操作系统什么时候创建完成 什么时候执行我们无法预知无法控制
# def task(i):
#     print("%s start" % i)
#     time.sleep(2)
#     print("%s stop" % i)
#
# if __name__ == ‘__main__‘:
#     start_time = time.time()
#     ps = []
#     for i in range(1,3):
#         p = Process(target=task,args=(i,))
#         p.start()
#         ps.append(p)
#         # 主进程等子进程结束
#     for p in ps:
#         p.join()
#
#     print("主进程!!!!",time.time()-start_time) 

重点: join()让父进程在原地等待。

原文地址:https://www.cnblogs.com/TF511/p/9925432.html

时间: 2024-10-06 04:40:38

父进程等待子进程结束的相关文章

Linux下利用fork()创建子进程并使父进程等待子进程结束

int status; pid_t t = fork(); if(t){ waitpid(t, &status, 0); }else{ system("vi temp.txt"); exit(0); } //父进程和子进程均执行完毕后继续执行下去 分析过程: if 和 else 还是选择分支. 主要的原因是,fork() 函数调用一次,返回两次.两次返回的区别是:子进程的返回值是0,父进程返回值为新子进程的进程ID.返回后,父进程执行waitpid(t, &status

linux 进程学习笔记-等待子进程结束

<!--[if !supportLists]-->Ÿ <!--[endif]-->等待子进程结束 pid_t waitpid(pid_t pid, int *stat_loc, int options) 另外有一个函数叫wait,其相当于 waitpid(-1, &status, 0) 大家经常看到的关于waitpid的经典例子是:你下载了某个软件的安装程序A,其在安装即将结束时启动了另外一个流氓软件的安装程序B,当B也安装结束后,其告诉你所有安装成功了.A和B分别在不同的

linux的父进程向子进程发kill信号例子以及对子进程的状态进行判断

先看一个父进程向子进程发kill信号例子: #include <stdio.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> int main(int argc, const char *argv[]) { pid_t pid; int status; pid = fork(); if (0 == pid) { print

关于父进程和子进程的关系(UAC 绕过思路)

表面上看,在windows中.如果是a进程创建了b进程,那么a进程就是b进程的父进程,反之,如果是b创建了a,那么b进程就是a的父进程,这是在windows出现以来一直是程序猿们都证实的,但是在在win Vista后面有了一个新安全消息机制,UAC(user account control),这里科普下UAC的功能,其实UAC就是大家常见的安装软件或者启动程序的时候的出现的全屏变暗的一个提示框,这里顺便提醒下大家不要把它的提醒级别降低,这里大家不要蓄意把他的提示级别较低,这样会带来很大的安全隐患

linux程序设计——父进程和子进程(第十三章)

13.5    父进程和子进程 这节将介绍如何在子进程中运行一个与父进程完全不同的另外一个程序,而不是仅仅运行一个相同程序.使用exec调用来完成这一项工作.这里的一个难点是,通过exec调用的进程需要知道应该访问哪个文件描述符.在前面的例子中,因为子进程本身有file_pipes数据的一份副本(点击打开"fork复制进程映像"链接),所以这并不成为问题.但经过exec调用后,情况就不一样了,因为原来的进程已经被新的进程替换了.为解决这个问题,可以将文件描述符(实际上它只是一个数字)作

父进程和子进程

父进程 在计算机领域,父进程(英语:Parent Process)指已创建一个或多个子进程的进程. UNIX 在UNIX里,除了进程0(即PID=0的交换进程,Swapper Process)以外的所有进程都是由其他进程使用系统调用fork创建的,这里调用fork创建新进程的进程即为父进程,而相对应的为其创建出的进程则为子进程,因而除了进程0以外的进程都只有一个父进程,但一个进程可以有多个子进程. 操作系统内核以进程标识符(Process Identifier,即PID)来识别进程.进程0是系统

UNIX网络编程卷1 服务器程序设计范式5 预先派生子进程,由父进程向子进程传递套接字描述符

本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 1.只让你进程调用 accept,然后把所接受的已连接套接字"传递"给某个子进程. 这样做就不用因为所有子进程都调用 accept 而需提供上锁保护 2.父进程必须跟踪子进程的忙闲状态,以便给空闲子进程传递新的套接字 typedef struct { pid_t child_pid; /* 子进程的进程 ID */ int child_pipefd; /* 父进程中连接到该子进程

父进程与子进程的关系(31-04)

一个父进程(主进程)可以生成多个子进程, 每个父进程/子进程都有一个特定的ID号. from multiprocessing import Process import timeimport os def info(title): print(title) print('module name:', __name__) print('parent process:', os.getppid()) # 显示父进程ID print('process id:', os.getpid()) # 显示子进

一个关于系统父进程与子进程的理解案例

代码实例 #include<stdio.h> #include<unistd.h> /*程序输出结果 主进程id:8377 进程id:8377,父进程id:3290,插曲 进程id:8377,父进程id:3290,Bye 进程id:8378,父进程id:8377,hello 进程id:8378,父进程id:8377,Bye 进程id:8379,父进程id:1397,插曲 进程id:8379,父进程id:1397,Bye 进程id:8380,父进程id:1397,hello 进程id