多进程小demo

#coding=utf-8
#author=murongtiedan

import time
import random
from multiprocessing import Process



def foo(i):
    print("进程"+str(i)+"启动。。。"+"当前时间:"+str(time.ctime()))
    time.sleep(random.uniform(1,3))
    print("进程" + str(i) + "终止!!!"+"当前时间:"+str(time.ctime()))


print(__name__)
if __name__ == '__main__':
    print("全部进程开始!")
    p_ls = list()
    for i in range(4):
        p_ls.append(Process(target=foo,args=(i,)))
    for p in p_ls:
        p.start()
    for p in p_ls:
        p.join()
    print("全部进程终止!")
在C语言中,多进程编程是一种常见的并发处理方式,尤其适用于需要并行执行多个任务的场景。通过使用`fork()`函数创建子进程,可以实现父进程与子进程之间的独立运行。以下是一个简单的多进程测试示例代码,展示了如何创建子进程并让其执行特定任务。 ### 示例代码 ```c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { pid_t pid; int status; // 创建子进程 pid = fork(); if (pid < 0) { // fork失败 fprintf(stderr, "Fork failed\n"); return 1; } else if (pid == 0) { // 子进程 printf("Child process: PID = %d\n", getpid()); printf("Child process is running...\n"); sleep(2); // 模拟子进程执行耗时任务 printf("Child process finished.\n"); exit(0); // 子进程退出 } else { // 父进程 printf("Parent process: PID = %d, Child PID = %d\n", getpid(), pid); printf("Parent process is waiting for child to finish...\n"); // 等待子进程结束 waitpid(pid, &status, 0); if (WIFEXITED(status)) { printf("Child exited with status %d\n", WEXITSTATUS(status)); } printf("Parent process finished.\n"); } return 0; } ``` ### 代码说明 - **`fork()`**:用于创建一个新的进程。调用成功后,`fork()`会在父进程中返回子进程的PID,在子进程中返回0。 - **`waitpid()`**:父进程通过该函数等待子进程结束,并获取其退出状态[^2]。 - **`sleep(2)`**:模拟子进程执行耗时任务的过程。 - **`exit(0)`**:子进程正常退出。 ### 运行效果 编译并运行上述代码后,输出将类似于: ``` Parent process: PID = 12345, Child PID = 12346 Parent process is waiting for child to finish... Child process: PID = 12346 Child process is running... Child process finished. Child exited with status 0 Parent process finished. ``` 父进程会等待子进程完成后再继续执行,确保了进程间的同步。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值