<bdo id='YktUr'></bdo><ul id='YktUr'></ul>

<tfoot id='YktUr'></tfoot>

<small id='YktUr'></small><noframes id='YktUr'>

  • <legend id='YktUr'><style id='YktUr'><dir id='YktUr'><q id='YktUr'></q></dir></style></legend>

    <i id='YktUr'><tr id='YktUr'><dt id='YktUr'><q id='YktUr'><span id='YktUr'><b id='YktUr'><form id='YktUr'><ins id='YktUr'></ins><ul id='YktUr'></ul><sub id='YktUr'></sub></form><legend id='YktUr'></legend><bdo id='YktUr'><pre id='YktUr'><center id='YktUr'></center></pre></bdo></b><th id='YktUr'></th></span></q></dt></tr></i><div id='YktUr'><tfoot id='YktUr'></tfoot><dl id='YktUr'><fieldset id='YktUr'></fieldset></dl></div>

      1. python实现多线程采集的2个代码例子

        下面是详细的攻略:
          <bdo id='rJ5X3'></bdo><ul id='rJ5X3'></ul>
            <legend id='rJ5X3'><style id='rJ5X3'><dir id='rJ5X3'><q id='rJ5X3'></q></dir></style></legend><tfoot id='rJ5X3'></tfoot>
            <i id='rJ5X3'><tr id='rJ5X3'><dt id='rJ5X3'><q id='rJ5X3'><span id='rJ5X3'><b id='rJ5X3'><form id='rJ5X3'><ins id='rJ5X3'></ins><ul id='rJ5X3'></ul><sub id='rJ5X3'></sub></form><legend id='rJ5X3'></legend><bdo id='rJ5X3'><pre id='rJ5X3'><center id='rJ5X3'></center></pre></bdo></b><th id='rJ5X3'></th></span></q></dt></tr></i><div id='rJ5X3'><tfoot id='rJ5X3'></tfoot><dl id='rJ5X3'><fieldset id='rJ5X3'></fieldset></dl></div>

          • <small id='rJ5X3'></small><noframes id='rJ5X3'>

              <tbody id='rJ5X3'></tbody>

                  下面是详细的攻略:

                  Python实现多线程采集

                  前言

                  对于一些需要收集数据的任务,并发的采集方式无疑是对效率的一大提升。Python语言提供了多线程编程的支持,本文将会介绍两种使用Python实现多线程采集的方式并提供相应的代码。

                  代码实现

                  代码一

                  第一种实现方式相对来说比较简单理解,我们可以直接使用Thread类来创建新的线程并运行。

                  import threading
                  import requests
                  
                  def main():
                      urls = ["http://example.com/", 
                              "http://example.com/news", 
                              "http://example.com/about", 
                              "http://example.com/contact",
                              "http://example.com/sitemap",
                              "http://example.com/blog",
                              "http://example.com/jobs",
                              "http://example.com/feedback"]
                  
                      threads = []
                  
                      for url in urls:
                          t = threading.Thread(target=fetch_url, args=(url,))
                          threads.append(t)
                          t.start()
                  
                      for t in threads:
                          t.join()
                  
                  def fetch_url(url):
                      print("Fetching {0}".format(url))
                      try:
                          r = requests.get(url)
                          print("{0}: {1}".format(url, r.status_code))
                      except requests.exceptions.RequestException as e:
                          print("{0}: {1}".format(url, e))
                  

                  使用上述代码,简单来说,我们首先定义了一个列表urls,并在遍历该列表的过程中,创建了多个线程,每个线程都调用了fetch_url函数,并传入了当前的URL。接着,我们在主线程内通过join等待其他线程的结束。

                  代码二

                  另外一种实现方式相对来说更加高级,可以同时限制线程数量来进一步提升效率,我们可以使用Python的线程池来实现。

                  import concurrent.futures
                  import requests
                  
                  def main():
                      urls = ["http://example.com/", 
                              "http://example.com/news", 
                              "http://example.com/about", 
                              "http://example.com/contact",
                              "http://example.com/sitemap",
                              "http://example.com/blog",
                              "http://example.com/jobs",
                              "http://example.com/feedback"]
                  
                      with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
                          future_to_url = {executor.submit(fetch_url, url): url for url in urls}
                          for future in concurrent.futures.as_completed(future_to_url):
                              url = future_to_url[future]
                              try:
                                  data = future.result()
                                  print("{0}: {1}".format(url, data))
                              except Exception as exc:
                                  print("{0}: {1}".format(url, exc))
                  
                  def fetch_url(url):
                      print("Fetching {0}".format(url))
                      try:
                          r = requests.get(url)
                          return r.status_code
                      except requests.exceptions.RequestException as e:
                          return str(e)
                  

                  使用以上代码,我们可以看到,在主函数内,我们首先定义了一个URL列表urls,并使用线程池ThreadPoolExecutor创建了一个最大线程数为5的线程池。随后,我们在使用submit方法向线程池提交任务时,还为每个任务使用了一个dict来存储其对应的URL地址,方便我们后续的输出。最后,我们在对future进行as_completed迭代的过程中获取了每个任务返回的结果。

                  总结

                  以上两种多线程采集Python代码的方式并不是唯一的选择,而是较为常用且简便的方式之一。通过合理使用多线程的方式来提升程序的效率,是Python程序员们需要重点考虑的一项工作。

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  Python中有三个内置函数eval()、exec()和compile()来执行动态代码。这些函数能够从字符串参数中读取Python代码并在运行时执行该代码。但是,使用这些函数时必须小心,因为它们的不当使用可能会导致安全漏洞。
                  在Python中,下载网络文本数据到本地内存是常见的操作之一。本文将介绍四种常见的下载网络文本数据到本地内存的实现方法,并提供示例说明。
                  来给你详细讲解下Python 二进制字节流数据的读取操作(bytes与bitstring)。
                  Python 3.x 是 Python 2.x 的下一个重大版本,其中有一些值得注意的区别。 Python 3.0中包含了许多不兼容的变化,这意味着在迁移到3.0之前,必须进行代码更改和测试。本文将介绍主要的差异,并给出一些实例来说明不同点。
                  要在终端里显示图片,需要使用一些Python库。其中一种流行的库是Pillow,它有一个子库PIL.Image可以加载和处理图像文件。要在终端中显示图像,可以使用如下的步骤:
                  在Python中,我们可以使用Pillow库来进行图像处理。具体实现两幅图像合成一幅图像的方法如下:
                  <legend id='42k84'><style id='42k84'><dir id='42k84'><q id='42k84'></q></dir></style></legend>

                        <tbody id='42k84'></tbody>
                        <bdo id='42k84'></bdo><ul id='42k84'></ul>
                        1. <small id='42k84'></small><noframes id='42k84'>

                          <tfoot id='42k84'></tfoot>
                          <i id='42k84'><tr id='42k84'><dt id='42k84'><q id='42k84'><span id='42k84'><b id='42k84'><form id='42k84'><ins id='42k84'></ins><ul id='42k84'></ul><sub id='42k84'></sub></form><legend id='42k84'></legend><bdo id='42k84'><pre id='42k84'><center id='42k84'></center></pre></bdo></b><th id='42k84'></th></span></q></dt></tr></i><div id='42k84'><tfoot id='42k84'></tfoot><dl id='42k84'><fieldset id='42k84'></fieldset></dl></div>