zoukankan      html  css  js  c++  java
  • 进程锁和进程池(附线程池)

    进程锁和线程锁的写法看起来差不多,进程锁是用来防止使用多进程的时候打印出现混乱。

    # coding=utf-8
    from multiprocessing import Process, Lock
    
    def f(l, i):
        l.acquire()
        print u'进程', i
        l.release()
    
    if __name__ == '__main__':
        lock = Lock()
        for i in range(10):
            Process(target=f, args=(lock, i)).start()

    进程池可以控制同一时间有多少个进程可以在cup上运行

    # coding=utf-8
    from multiprocessing import Pool
    import os, time
    
    
    def f(i):
        print i, os.getpid()
        time.sleep(2)
    
    
    def c(arg):
        print u'回调'
    
    
    if __name__ == '__main__':  # 在Windows上运行必须要写这个判断,否则报错,还有其它解决方法,可参考报错提示
        pool = Pool(processes=3)  # 进程池允许同时放10个进程
    
        for i in range(10):
            p = pool.apply_async(func=f, args=(i,), callback=c)  # apply_async并行,apply串行, callback是进程运行结束的回调(在父进程上运行)
    
        pool.close()
        pool.join()  # 等所有的进程运行结束(一定要在colse之后join)

    执行结果:

    0 7700
    1 7780
    2 4636
    3 7700
    回调
    回调
    4 7780
    5 4636
    回调
    6 7700
    回调
    回调7
     7780
    8回调
    4636
    9 7700
    回调
    回调
    回调
    回调

     

    multiprocessing.dummy模块下的Pool可以实现线程池,写法类似进程池

  • 相关阅读:
    二分法查找(C语言)
    冒泡排序法(C语言)
    Python 字符串操作方法大全
    guns搭建笔记
    mysql数据库下载及安装
    docker安装
    自动化学习路径及问题汇总目录
    UI自动化使用docker做并行执行
    allure趋势图无数据
    allure报告不显示@Attachment
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/10416007.html
Copyright © 2011-2022 走看看