【Python多进程】报错EOFError: Ran out of input

文章讲述了在使用Python多进程模块multiprocessing时遇到的EOFError,原因是主进程和子进程在同一个文件时,PyCharm等编辑器在读取代码时引发错误。解决方法是将子进程的代码移到单独的worker_module.py文件中并从主进程中导入。
摘要由CSDN通过智能技术生成

Python多进程multiprocessing报错EOFError: Ran out of input

在使用python多进程multiprocessing过程中,报错
pycharm console
该错误表明是文件读写发生错误。这是由于PyCharm等编辑器开启进程时是需要读取代码源文件的缘故。

错误复现

# main.py
import os
import time

import multiprocessing


def worker(process_num):
    """进程的工作函数"""
    print(f"Worker {process_num} is running with PID: {os.getpid()}")
    time.sleep(0.2)
    return os.getpid()


if __name__ == "__main__":
    # 创建多个进程
    num_processes = 4
    processes = []
    for i in range(num_processes):
        process = multiprocessing.Process(target=worker, args=(i,))
        processes.append(process)

    # 启动所有进程
    for process in processes:
        process.start()

    # 等待所有进程结束
    for process in processes:
        process.join()

    print("All processes have finished.")

此时需要开启子进程的函数文件和主进程在同一个文件中

解决

# worker_module.py
import os
import time


def worker(process_num):
    """进程的工作函数"""
    print(f"Worker {process_num} is running with PID: {os.getpid()}")
    time.sleep(0.2)
    return os.getpid()


# main.py
import multiprocessing
import worker_module

if __name__ == "__main__":
    # 创建多个进程
    num_processes = 4
    processes = []
    for i in range(num_processes):
        process = multiprocessing.Process(target=worker_module.worker, args=(i,))
        processes.append(process)

    # 启动所有进程
    for process in processes:
        process.start()

    # 等待所有进程结束
    for process in processes:
        process.join()

    print("All processes have finished.")

将需要开启子进程的代码单独放入文件worker_module.py,再在主进程代码main.py中导入。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值