黑马程序员技术交流社区

标题: 【广州python】multiprocessing模块实现资源共享 [打印本页]

作者: Leo06    时间: 2018-11-8 08:30
标题: 【广州python】multiprocessing模块实现资源共享
本帖最后由 Leo06 于 2018-11-8 08:32 编辑

进程间是不能共享变量的,但是如果当有需要共享变量,可以借用multiprocessing模块中的方法,下面就来介绍一下该模块中方法的实现方法:
(一)共享变量

[AppleScript] 纯文本查看 复制代码
import multiprocessing


def func(num):
    num.value = 20

if __name__ == "__main__":
    num = multiprocessing.Value("d", 10.0)
    print(num.value)
    p = multiprocessing.Process(target=func, args=(num,))
    p.start()
    p.join()
    print(num.value)


(二)共享数组
[AppleScript] 纯文本查看 复制代码
import multiprocessing


def func(arr):
    arr[0] = 6
    arr[1] = 7


if __name__ == "__main__":
    arr = multiprocessing.Array("i", [1, 2, 3, 4, 5])
    print(arr[:])
    p = multiprocessing.Process(target=func, args=(arr,))
    p.start()
    p.join()
    print(arr[:])


(三)共享列表
[AppleScript] 纯文本查看 复制代码
import multiprocessing


def func(mylist):
    mylist.append(11)
    mylist.append(22)
    mylist.append(33)


if __name__ == "__main__":
    mylist = multiprocessing.Manager().list(range(5))
    p = multiprocessing.Process(target=func, args=(mylist,))
    p.start()
    p.join()
    print(mylist)


(四)共享字典
[AppleScript] 纯文本查看 复制代码
import multiprocessing


def func(mydict):
    mydict['name'] = 'python'
    mydict['age'] = 20


if __name__ == "__main__":
    mydict = multiprocessing.Manager().dict()
    p = multiprocessing.Process(target=func, args=(mydict,))
    p.start()
    p.join()
    print(mydict)











欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2