zoukankan      html  css  js  c++  java
  • Python_报错:line XXX, in join assert self._state in (CLOSE, TERMINATE) AssertionError

    Python_报错:

    line XXX, in join
    assert self._state in (CLOSE, TERMINATE)
    AssertionError

    源码:

    #encoding=utf-8
    import time
    from multiprocessing import Pool
    def run(fn):
        #fn: 函数参数是数据列表的一个元素
        time.sleep(1)
        return fn * fn
    
    if __name__ == "__main__":
        testFL = [1,2,3,4,5,6]
        print ('Single process execution sequence:') #顺序执行(也就是串行执行,单进程)
        s = time.time()
        for fn in testFL:
            run(fn)
        e1 = time.time()
        print(u"顺序执行时间:",int(e1-s))
    
        print('concurrent:') #创建多个进程,并行执行
        pool = Pool(5) #创建拥有5个进程数量的进程池
        #testFL:要处理的数据列表,run:处理testFL列表中数据的函数
        rl = pool.map(run,testFL)
        #pool.close()#关闭进程池,不再接受新的任务,join之前必须加上close(),否则会报错
        pool.join()#主进程阻塞等待子进程的退出
        e2 = time.time()
        print(u"并行执行时间:",int(e2 - e1))
        print(rl)

    原因:在进程池操作join()时。需在前面加上pool.close()即可

    #encoding=utf-8
    import time
    from multiprocessing import Pool
    def run(fn):
        #fn: 函数参数是数据列表的一个元素
        time.sleep(1)
        return fn * fn
    
    if __name__ == "__main__":
        testFL = [1,2,3,4,5,6]
        print ('Single process execution sequence:') #顺序执行(也就是串行执行,单进程)
        s = time.time()
        for fn in testFL:
            run(fn)
        e1 = time.time()
        print(u"顺序执行时间:",int(e1-s))
    
        print('concurrent:') #创建多个进程,并行执行
        pool = Pool(5) #创建拥有5个进程数量的进程池
        #testFL:要处理的数据列表,run:处理testFL列表中数据的函数
        rl = pool.map(run,testFL)
        pool.close()#关闭进程池,不再接受新的任务,join之前必须加上close(),否则会报错
        pool.join()#主进程阻塞等待子进程的退出
        e2 = time.time()
        print(u"并行执行时间:",int(e2 - e1))
        print(rl)

    结果:

    D:Python36python.exe D:/Python36/test_mysql/test_0810_01.py
    Single process execution sequence:
    顺序执行时间: 6
    concurrent:
    并行执行时间: 2
    [1, 4, 9, 16, 25, 36]
    
    Process finished with exit code 0
  • 相关阅读:
    JS面向对象的理解
    引用类型值的相等判断
    数组的常用方法
    得到一定范围内的随机数
    数组随机排序
    【目标检测大集合】R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记
    卷积层和池化层学习
    R-FCN:基于区域的全卷积网络来检测物体
    【目标检测】Faster RCNN算法详解
    Selective Search for Object Recognition
  • 原文地址:https://www.cnblogs.com/rychh/p/11332294.html
Copyright © 2011-2022 走看看