You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用multiprocessing.Process无输出的原因及解决方法

现有多进程代码的问题
  • 缺失multiprocessing模块导入:代码中直接调用multiprocessing.Process但没有导入对应模块,运行首先会触发命名错误
  • 仅创建进程对象未启动:Process实例生成后必须调用start()方法才会真正启动子进程执行目标逻辑,你当前只是创建了对象,没有触发运行
  • 主进程未等待子进程执行就直接退出:主进程循环创建完所有进程对象后就直接结束了,Python主进程退出时会强制终止所有未完成的子进程,disallow函数还没来得及执行就被杀死,自然没有输出
修正后的完整可运行代码
import sys, urllib, multiprocessing
from urllib.request import urlopen, Request


def disallow(line):
    if "Disallow" in line:
        print(line.replace("Disallow: ", ""))


def parse_robot_txt(url):
    url += "robots.txt"
    req = Request(url, data=None,
        headers={"User-Agent": "Mozilla/5.0"},)
    robots = urlopen(req).read().decode("UTF-8")
    lines = str(robots).splitlines()
    processes = []
    for l in lines:
        p = multiprocessing.Process(target=disallow, args=(l,))
        p.start()
        processes.append(p)
    # 阻塞主进程,等待所有子进程执行完成
    for p in processes:
        p.join()


if __name__ == "__main__":
    parse_robot_txt("https://moz.com/")

注:当前场景仅为简单字符串匹配逻辑,使用多进程反而会带来额外的进程调度开销,实际生产不需要用多进程实现该需求,以上仅为符合你要求的多进程正确实现版本。

内容的提问来源于stack exchange,提问作者PaliProx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:24:02