多处理在新控制台 python 中运行进程以获取每个进程的输入

Posted

技术标签:

【中文标题】多处理在新控制台 python 中运行进程以获取每个进程的输入【英文标题】:multiprocessing run process in new console python to get input for each process 【发布时间】:2021-02-24 05:54:25 【问题描述】:

我正在尝试同时运行同一类的多个实例。每个实例都有一个需要输入的方法。

我有一个模块需要同时在不同的地方运行。这些模块彼此独立运行。我应该能够从 control(main) 模块发出模块实例的信号。所以我尝试使用多线程来做到这一点,但我无法同时获得输入。下面的代码返回 EOF 错误。

import multiprocessing as mp
import time

class Concurrent():

    def __init__(self):
        pass

    def myMethod(self):
        value = input("Enter input : ")


num = int(input("Enter number of process to run : "))

obj_arr=[]
for i in range(num):
    obj = Concurrent()
    obj_arr.append(obj)

def func(obj):
    obj.myMethod()

ps = []
for obj in obj_arr:
    p = mp.Process(target = func,args = (obj,))
    ps.append(p)

[x.start() for x in ps]

我收到此错误

Traceback (most recent call last):
  File "/usr/lib/python3.8/multiprocessing/process.py", line 315, in 
 _bootstrap
    self.run()
 File "/usr/lib/python3.8/multiprocessing/process.py", line 108, in 
run
    self._target(*self._args, **self._kwargs)
  File "concurrent.py", line 21, in func
    obj.stressCPU()
  File "concurrent.py", line 10, in stressCPU
    value = input("Enter input : ")
EOFError: EOF when reading a line

【问题讨论】:

【参考方案1】:

我看起来您正在尝试实现一个将运行函数的 MP 池。 请参考:https://docs.python.org/3/library/multiprocessing.html

【讨论】:

以上是关于多处理在新控制台 python 中运行进程以获取每个进程的输入的主要内容,如果未能解决你的问题,请参考以下文章

如何在分叉进程中处理套接字连接

使用多个 Datareader 连接进行批处理

在新进程中运行时窗口标题中的“无响应”

如何从 python 脚本在新窗口上打开批处理

在新的应用程序域中运行时,如何将标准输出转换为 mstest 输出?

程序在 python 中运行时如何打印到控制台? [复制]