如何在同一时间调用某些功能?

时间:2015-11-05 13:31:45

标签: python multithreading python-2.7 selenium-webdriver multiprocessing

我想知道在同一时间运行某些功能的最佳方法是什么。 我写了一个Python模块,用Selenium webdriver运行3个Firefox实例,它应该在每个实例中加载相同的页面。

我的代码如下:

url = "http://google.com"
firefox1 = webdriver.Firefox()
firefox2 = webdriver.Firefox()
firefox3 = webdriver.Firefox()
firefox1.get(url)
firefox2.get(url)
firefox3.get(url)

硒非常(!)慢,每页加载大约需要30-60秒。 我想运行所有firefox*.get(url)并行。 最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

如果不是那么大的过程,你可以使用线程(虽然这不是一个完美的并行,因为python的GIL但仍然可以在某种程度上完成你的工作)

2)您可以为此目的使用异步编程。如果它的python3你可以使用内置库asyncio

这里是示例程序(我没有测试但它应该让你对asyncio有所了解)

import asyncio

def func1(args):
    print('func1')
def func2(args):
    print('func2')
def func3(args):
    print('func3')

loop = asyncio.get_event_loop()
flist = [func1(args), func2(args), func3(args)]
w = asyncio.wait(flist)
loop.run_until_complete(w)