我正在抓取一个网站以获取信息,并希望从每个页面可用的翻译页面中获取一些信息。
所以我编写了一个函数来转到相应的页面并获取翻译的信息。唯一的问题是我必须等待,首先它击中法语,然后是意大利语,然后是德语,然后是西班牙语,然后是英语......我想立刻得到它们。
我正在使用英文版抓取网站,然后当我到达目标网页时,我想要同时处理。我已经阅读了很多关于如何为刮刀多个处理整个脚本的内容,但我只是希望它在刮擦的这一点上这样做,因为它是瓶颈所在。以下是该部分代码的内容:
-- Create a holding table
SELECT * INTO Holding_Table
FROM Your_View
WHERE 1 = 2
-- Procedure to populate data into that holding table
CREATE PROCEDURE populate_data
AS
BEGIN
TRUNCATE TABLE Holding_Table
INSERT INTO Holding_Table
SELECT * FROM Your_View
END
我想在可能的情况下同时触发该功能的五个实例?可能很简单,只是没有灯泡时刻。
答案 0 :(得分:0)
尝试新的asyncio
library。制作一个wrapper_translator
包装器,在translator
装饰器放置时返回@asyncio.coroutine
方法的输出。
答案 1 :(得分:0)
这很简单,只需使用concurrent.futures即可。由于您的任务是IO绑定的,ThreadPoolExecutor就足够了。
languages = ('Français', 'Italiano', 'Deutsch', 'Español', 'English')
with ThreadPoolExecutor(max_workers=5) as executor:
for language in languages:
executor.submit(translator, lang, language=language)