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='\n')
    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()

 

上一篇:JAVA线程池ThreadPoolExecutor类使用详解


下一篇:MySQL中的Buffer Pool-支撑高并发的一些设计