我试图通过多线程处理我的脚本中更耗时的部分来减少执行时间,这主要是定位器调用。
然而,我一直在" CannotSendRequest"和#34; ResponseNotReady"来自两个线程的异常。
这是因为我使用相同的http句柄吗?
input_worker = threading.Thread(name="input_worker", target=find_input_fields, args=(form, args, logger))
input_worker.setDaemon(True)
select_worker = threading.Thread(name="select_worker", target=find_select_fields, args=(form, logger))
select_worker.setDaemon(True)
thread_pool.append(input_worker)
thread_pool.append(select_worker)
在find_input_fields函数中就像是
input_fields = form.find_elements_by_tag_name("input")
答案 0 :(得分:1)
Selenium每个线程需要1个cpu核心。并且Selenium webdriver不建议使用多线程。考虑如果你有一个4核系统,你可以运行链接到每个核心的4个selenium单独的线程。 在创建2个线程时,您将从两个线程中获得异常。
FYI
Is it possible to parallelize selenium webdriver get_attribute calls in python?