微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在多处理时获取用户输入

如何解决如何在多处理时获取用户输入

我正在尝试运行多个需要输入验证码的 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' 给出...

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。