标签:
项目地址
作者madisonmay
from functools import wrapsfrom concurrent.futures import ThreadPoolExecutorclass Tomorrow():def __init__(self, future, timeout):self._future = futureself._timeout = timeoutself._wait = self._future.resultdef __getattr__(self, name):result = self._future.result(self._timeout)return result.__getattribute__(name)def async(n, base_type, timeout=None):def decorator(f):if isinstance(n, int):pool = base_type(n)elif isinstance(n, base_type):pool = nelse:raise TypeError("Invalid type: %s"% type(base_type))@wraps(f)def wrapped(*args, **kwargs):return Tomorrow(pool.submit(f, *args, **kwargs),timeout=timeout)return wrappedreturn decoratordef threads(n, timeout=None):return async(n, ThreadPoolExecutor, timeout)
import timeimport requestsimport sysfrom tomorrow import threadss=requests.Session()jishu=0@threads(10)def download(url):global jishufor _ in range(5):try:jishu+=1aa=s.get(url)sys.stderr.write(‘%s \r‘%jishu)except:passreturn aaurls = [‘http://p.3.cn/prices/mgets?skuIds=J_1273600‘]*100if __name__ == "__main__":start = time.time()responses = [download(url) for url in urls]html = [response.text for response in responses]end = time.time()print ("Time: %f seconds" % (end - start))
标签:
原文地址:http://www.cnblogs.com/pyld/p/4716744.html