【问题标题】:How to get user input while Multiprocessing多处理时如何获取用户输入
【发布时间】:2021-01-26 01:14:14
【问题描述】:

我正在尝试运行多个需要输入验证码的 selenium 实例,但我是多处理的初学者。

所以在运行和输入的时候它会显示一个错误:

EOFError: 读取一行时出现EOF

这是我正在运行的代码示例:

import time
from selenium import webdriver
import multiprocessing

def first():
    chromedriver = "C:\chromedriver"
    driver = webdriver.Chrome(chromedriver)
    driver.set_window_size(1000, 1000)
    driver.get('https://www.google.com/')
    time.sleep(5)
    captcha1 = input("in1: ")
    print(inn)

def sec():
    chromedriver = "C:\chromedriver"
    driverr = webdriver.Chrome(chromedriver)
    driverr.set_window_size(1000, 1000)
    driverr.get('https://www.google.com/')
    captcha2 = input("in2: ")
    print(ins)

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=first)
    p2 = multiprocessing.Process(target=sec)
    p1.start()
    p2.start()

    p1.join()
    p2.join()

我不仅需要知道如何提供输入,而且在这种情况下,首先需要 'captcha2' 输入,因此 'captcha1' 必须等到 'captcha2' 给出...

【问题讨论】:

    标签: python selenium user-input python-multiprocessing eoferror


    【解决方案1】:

    您需要将请求用户输入的消息发送回主进程,以便它(并且只有它)可以向用户询问它们。最简单的方法可能是为请求创建一个multiprocessing.Queue 对象(以便主进程可以监听所有 子进程)和一个Pipe每个 处理答案。每个请求当然会被标记为发送它的进程的标识符,以便可以将响应发送到正确的位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-23
      • 2023-04-02
      相关资源
      最近更新 更多