python - 通过 fork() 运行多个子进程的最佳方式是什么?

标签 python linux

一个 python 脚本需要通过 fork() 生成多个子进程。所有这些子进程都应该同时运行,父进程应该等待它们全部完成。能够为“慢” child 设置一些超时会很好。 收集完所有 child 后,父进程继续处理脚本的其余部分。

解决问题的最佳方法是什么?谢谢。

最佳答案

简单的例子:

import os
chidren = []
for job in jobs:
    child = os.fork()
    if child:
        children.append(child)
    else:
        pass  # really should exec the job
for child in children:
    os.waitpid(child, 0)

让慢速的 child 超时需要多做一些工作;您可以使用 wait 而不是 waitpid,并从子项列表中剔除返回值,而不是依次等待每个子项(如此处所示)。如果您使用 SIGALRM 处理程序设置一个 alarm,您可以在指定的延迟后终止等待。这都是标准的 UNIX 内容,而不是特定于 Python 的...

关于python - 通过 fork() 运行多个子进程的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/174853/

相关文章:

linux - 如何在父 shell 和子 shell 之间使用相同的 bash 变量

python - xmltodict unparse 解析不一样

python - Django 呈现模板 `500.html` 而不是 `404.html`

java - 使用 Java 在 Linux 上的文件夹内运行进程

linux - sqlmap语法工作期间不要问任何问题

linux - Apache - 排除本地网络以重定向 HTTPS

php - 安装 Composer 时出错 - curl : (23) Failed writing body (0 ! = 16133)

python - 如何将 Python 中数据帧的列值传递给 Oracle SQL 脚本

python - rpy2 传递 python 保留关键字参数

javascript - 如何使用 Django 显示日志