zoukankan      html  css  js  c++  java
  • Python实现线程池

    供参考

    from multiprocessing import Pool
    import time
    
    
    def function(index):
        print(f'Start process: {index}')
        time.sleep(3)
        print(f'End process {index}')
    
    
    if __name__ == '__main__':
        pool = Pool(processes=3)
        for i in range(100):
            pool.apply_async(function, args=(i,))
    
        print('Main Process started', sep='
    ')
        pool.close()
        pool.join()
        print('Main Proess ended')

    100个进程需要执行,但是最多同时执行3个进程。

    # map方法的使用
    # 第一个参数就是要启动的进程对应的执行方法
    # 第二个参数是一个可迭代对象,其中的每个元素会被传递给这个执行方法
    
    from multiprocessing import Pool
    import urllib.request
    import urllib.error
    
    
    def scrape(url):
        try:
            urllib.request.urlopen(url)
            print(f'URL {url} Scraped')
        except (urllib.error.HTTPError, urllib.error.URLError):
            print(f'URL {url} not Scraped')
    
    
    if __name__ == '__main__':
        pool = Pool(processes=3)
        urls = [
            'http://www.baidu.com',
            'http://www.meituan.com/',
            'http://blog.csdn.net/',
            'http://xxxyxxx.net'
        ]
        pool.map(scrape, urls)
        pool.close()
  • 相关阅读:
    【09】绝不在构造和析构过程中调用virtual方法
    【08】别让异常逃离析构函数
    C++ 外部调用private方法
    【07】为多态基类声明virtual析构方法
    C++ 构造过程和析构过程
    理解C# Lazy<T>
    DG
    MongoDB
    sh.status()
    DG
  • 原文地址:https://www.cnblogs.com/zhzhang/p/15087895.html
Copyright © 2011-2022 走看看