python - 使用 Selenium Python 并发访问 Instagram
问题描述
早上好,
考虑下面的代码(每个块对应一个笔记本单元):
def run_pilot():
driver = webdriver.Chrome('C:/Users/sample/Desktop/chromedriver_win32/chromedriver.exe')
driver.get("http://www.instagram.com")
# [...] (lines of code that accept cookies, send username and password)
return driver
第二个细胞
def thread_function(id):
driver = run_pilot()
driver.get('http://www.instagram.com/'+ "apple")
driver.get('http://www.instagram.com/'+ "samsung")
print("done " + str(id))
#...task to be done [...]
第三细胞
import concurrent.futures
nthreads=2
main_pilot = run_pilot() #--- this creates the main pilot
with concurrent.futures.ThreadPoolExecutor(max_workers=nthreads) as executor:
for i in range(nthreads):
executor.map(thread_function(i)) #2 new pilots should be created **concurrently**
预期行为:首先应该创建主飞行员,然后应该同时创建另外两个飞行员,以便它们同时执行相应的功能。
观察到的行为:主飞行员正确启动,但由于某种原因,当线程池跳入时,任务按顺序完成,而不是像我试图实现的那样并行完成。换句话说,当创建第二个飞行员时,它会登录网站并访问链接,然后立即创建下一个飞行员。我想要做的是线程同时工作,以便所有线程同时执行该函数。因此,窗口应该并行工作。
非常感谢所有帮助。
解决方案
推荐阅读
- ecmascript-6 - 如何在 svelte 中公开一个可以接受参数进行渲染的函数?
- javascript - 如何使用 express 和 node 进行异步调用
- javascript - 如何将数字从 app.js 传递给 index.html?我可以传递静态文本,但需要传递计算得出的数字或数组中的数字
- javascript - Vue.JS - 监听点击组件
- javascript - 在 Node.js 中使用装饰器
- java - 无法向可疑类型数组添加值
- c - 在 C 中 - 计数 1 的序列
- google-cloud-vision - 谷歌云视觉 api 返回带有 base 64 编码图像的空结果
- gradle - 在 nebula/gradle 中,如何将正在发布的版本注入正在发布的 jar 中?
- javascript - 将 null 或 falsy 值转换为未定义