从Thread获取返回的对象

时间:2015-12-21 10:48:25

标签: python multithreading

我正在编写一个打开3个Selenium Webdrivers的代码。

reminders

浏览器加载需要花费大量时间,我想并行加载它。 我虽然使用线程,但是如何从线程返回b1,b2,b3?

我的意思是,如果我有这个功能:

mainScreenViewController

使用它进行线程看起来像:

from selenium import webdriver
b1 = webdriver.Firefox()
b2 = webdriver.Firefox()
b3 = webdriver.Firefox()

但返回的值(浏览器实例)未设置为b1。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

看看Futures。他们应该允许你运行这样的代码:

N = 3
with ThreadPoolExecutor(max_workers=N) as executor:
    # start three Firefoxes in parallel
    futures = [executor.submit(webdriver.Firefox) for i in range(N)]
    # wait for all of them to be started
    browsers = [f.result() for f in futures]