当前位置:   article > 正文

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

eoferror: ran out of input

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.")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

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

解决

# 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.")

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/392024
推荐阅读
相关标签
  

闽ICP备14008679号