python系列——多进程之multiprocessing多进程管理包
发布日期:2021-09-30 09:33:41
浏览次数:5
分类:技术文章
本文共 1842 字,大约阅读时间需要 6 分钟。
1、简介
multiprocessing是python的多进程管理包,和threading.Thread类似。
2、如何简单使用
from multiprocessing import Processdef func(name): print('hello', name)if __name__ == "__main__": p = Process(target=func,args=('zhangyanlin',)) p.start() p.join() # 等待进程执行完毕
3、多进程共享数据情况下的使用方法
- Array,Value:存储在一个共享内存地图里,具体示例:
from multiprocessing import Array,Value,Processdef func(a,b): a.value = 3.333333333333333 for i in range(len(b)): b[i] = -b[i]if __name__ == "__main__": num = Value('d',0.0) arr = Array('i',range(11)) c = Process(target=func,args=(num,arr)) d= Process(target=func,args=(num,arr)) c.start() d.start() c.join() d.join() print(num.value) for i in arr: print(i)输出:3.333333333333333012345678910
说明:
创建num和arr时,“d”和“i”参数由Array模块使用的typecodes创建:“d”表示一个双精度的浮点数,“i”表示一个有符号的整数,这些共享对象将被线程安全的处理。
Array(‘i’, range(10))中的‘i’参数:
‘c’: ctypes.c_char ‘u’: ctypes.c_wchar ‘b’: ctypes.c_byte ‘B’: ctypes.c_ubyte‘h’: ctypes.c_short ‘H’: ctypes.c_ushort ‘i’: ctypes.c_int ‘I’: ctypes.c_uint‘l’: ctypes.c_long, ‘L’: ctypes.c_ulong ‘f’: ctypes.c_float ‘d’: ctypes.c_double
- Manager:由Manager()返回的manager提供list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition, Event, Barrier, Queue, Value and Array类型的支持,具体示例:
from multiprocessing import Process,Managerdef f(d,l): d["name"] = "zhangyanlin" d["age"] = 18 d["Job"] = "pythoner" l.reverse()if __name__ == "__main__": with Manager() as man: d = man.dict() l = man.list(range(10)) p = Process(target=f,args=(d,l)) p.start() p.join() print(d) print(l)输出:{'name': 'zhangyanlin', 'age': 18, 'Job': 'pythoner'}[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
说明:
Server process manager比 shared memory 更灵活,因为它可以支持任意的对象类型。另外,一个单独的manager可以通过进程在网络上不同的计算机之间共享,不过他比shared memory要慢。
转载地址:https://blog.csdn.net/h_jlwg6688/article/details/108512581 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年03月23日 15时16分34秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
在 npm 发布中文 API 初体验——中国历代纪元
2019-04-26
商业项目中改用中文命名标识符实例分析
2019-04-26
乐见 VS Code 翻译插件衍生出中文 API
2019-04-26
木兰编程语言重现——儿歌查询实例,引用模块、字符串列表操作
2019-04-26
以史为鉴:初代程序员自述七十五年前的编程心得(完)
2019-04-26
中文编程语言之Z语言初尝试 - ZLOGO 4
2019-04-26
在线编程网站对中文代码的支持
2019-04-26
中英文代码对比之ZLOGO 4 & LOGO
2019-04-26
编程语言试验之Antlr4+JavaScript实现"圈4"
2019-04-26
编写Visual Studio Code插件初尝试
2019-04-26
JavaScript实现ZLOGO子集: 前进+转向
2019-04-26
JavaScript实现ZLOGO子集: 单层循环功能
2019-04-26
JavaScript实现ZLOGO子集: 测试用例
2019-04-26
中文代码示例之5分钟入门TypeScript
2019-04-26
中文编程专栏月报:2017年11月
2019-04-26
FriceEngine试用与API中文化
2019-04-26
日语编程语言"抚子"-第三版实现初探
2019-04-26
为新语言编写Visual Studio Code语法高亮插件
2019-04-26
手机编程环境初尝试-用AIDE开发Android应用
2019-04-26
Java关键字的汉化用词探讨
2019-04-26