栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python-整理 多线程,多进程,线程池,进程池,协程,协程池

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python-整理 多线程,多进程,线程池,进程池,协程,协程池

记录下多线程,多进程,线程池,进程池,协程,协程池.

有可能是配置不行,我把下面的代码全部同时运行 电脑就卡住了.

运行函数
def run(max):
    import random
    import time
    time.sleep(random.uniform(0, 1))
    print(max, end="n")


list_Url = [item for item in range(100)]

多线程
 # 多线程-------------------------
if __name__ == '__main__':
    import threading

    Thread_list = []
    for item in list_Url:
        t1 = threading.Thread(target=run, args=(item,))
        Thread_list.append(t1)
        t1.start()
    for item_1 in Thread_list:
        item_1.join()
多进程
# 多进程-------------------------
if __name__ == '__main__':
    
    from multiprocessing import Process

    Thread_list = []
    Process_list = []
    for item in list_Url:
        t1 = Process(target=run, args=(item,))
        Process_list.append(t1)
        t1.start()
    for item_1 in Process_list:
        item_1.join()
线程池
# 线程池-------------------------
if __name__ == '__main__':
    from concurrent.futures import ThreadPoolExecutor

    with ThreadPoolExecutor(max_workers=32) as executor:
        executor.map(run, list_Url, timeout=None)
进程池
# 进程池-------------------------
if __name__ == '__main__':
    from multiprocessing import Pool

    with Pool(5)as  mp:
        mp.map(run, list_Url)
协程 gevent
#  协程 gevent-------------------------
if __name__ == '__main__':
    import gevent
    from gevent import monkey

    monkey.patch_all()
    monkey.patch_socket()
    list_a = []
    for item in [item for item in range(100)]:
        list_a.append(gevent.spawn(run, item))
    gevent.joinall(list_a)
协程 gevent pool
# 协程 gevent pool-------------------------
if __name__ == '__main__':
    import gevent
    from gevent import monkey
    from gevent.pool import Pool

    monkey.patch_all()
    list_a = []  # 限制最大并发
    pool = Pool(66)  # 分配100个任务,最大并发数为66
    for i in range(100):
        list_a.append(pool.spawn(run, i))
    gevent.joinall(list_a)

全部写到一起
def run(max):
    import random
    import time
    time.sleep(random.uniform(0, 1))
    print(max, end="n")


list_Url = [item for item in range(100)]

if __name__ == '__main__':
    # 多线程-------------------------
    import threading

    Thread_list = []
    for item in list_Url:
        t1 = threading.Thread(target=run, args=(item,))
        Thread_list.append(t1)
        t1.start()
    for item_1 in Thread_list:
        item_1.join()

    # 多进程-------------------------
    from multiprocessing import Process

    Thread_list = []
    Process_list = []
    for item in list_Url:
        t1 = Process(target=run, args=(item,))
        Process_list.append(t1)
        t1.start()
    for item_1 in Process_list:
        item_1.join()

    # 线程池-------------------------
    from concurrent.futures import ThreadPoolExecutor

    with ThreadPoolExecutor(max_workers=32) as executor:
        executor.map(run, list_Url, timeout=None)

    # 进程池-------------------------
    from multiprocessing import Pool

    with Pool(5)as  mp:
        mp.map(run, list_Url)
    # 协程 gevent-------------------------
    import gevent
    from gevent import monkey

    monkey.patch_all()
    monkey.patch_socket()
    list_a = []
    for item in [item for item in range(100)]:
        list_a.append(gevent.spawn(run, item))
    gevent.joinall(list_a)

    #  协程 gevent pool-------------------------
    import gevent
    from gevent import monkey
    from gevent.pool import Pool

    monkey.patch_all()
    list_a = []  # 限制最大并发
    pool = Pool(66)  # 分配100个任务,最大并发数为66
    for i in range(100):
        list_a.append(pool.spawn(run, i))
    gevent.joinall(list_a)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1019170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号