IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python multiprocessing 多进程 -> 正文阅读

[Python知识库]Python multiprocessing 多进程

1. Pool()实例化必须在 main函数中

????????原因:保护进程和子进程不会陷入pickle死循环

????????参考:python - multiprocessing pool example does not work and freeze the kernel - Stack Overflowhttps://stackoverflow.com/questions/52693216/multiprocessing-pool-example-does-not-work-and-freeze-the-kernel/52693952#52693952????????示例:

from multiprocessing import Pool, Manager


if __name__ == '__main__':
    po = Pool(10)

2. 丢进pool执行的函数,必须在此前定义好,并且需要在最外层定义。

? ? ? ? 原因:1.pool在实例化时就将函数进行pickle(序列化),因此必须在pool实例化之前,完成

??????????????????????函数的定义

? ? ? ? ? ? ? ? ? ?2. pickle的原理是,将函数名序列化,然后传给进程,进程中根据函数名进行

????????????????????????import。因此函数必须写在最外层,才能正常import。

? ? ? ? 参考:parallel processing - Python multiprocessing.Pool: AttributeError - Stack Overflowicon-default.png?t=LA92https://stackoverflow.com/questions/52265120/python-multiprocessing-pool-attributeerror

? ? ? 正确实例(函数在pool实例化之前定义好):

from multiprocessing import Pool, Manager


class Test:
    def pop_com_list(self, com_list):
        l0 = com_list.pop(0)
        print(l0)


if __name__ == '__main__':

    test = Test()
    common_list = Manager().list([])
    po = Pool(10)

    for i in range(10):
        common_list.append(i)

    for i in range(len(common_list)):
        po.apply_async(test.pop_com_list, (common_list,))

    po.close()
    po.join()

????????

? ? ? ? 错误实例(函数定义在main中而非最外层):

from multiprocessing import Pool, Manager


if __name__ == '__main__':
    
    class Test:
        def pop_com_list(self, com_list):
            l0 = com_list.pop(0)
            print(l0)


    test = Test()
    common_list = Manager().list([])
    po = Pool(10)
    for i in range(10):
        common_list.append(i)

    for i in range(len(common_list)):
        po.apply_async(test.pop_com_list, (common_list,))

    po.close()
    po.join()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:17:56  更:2021-11-23 12:20:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:51:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码