如何在python多进程multiprocessing中共享变量

通过value实现

        


话不多说,先上代码先上代码

import multiprocessing

def func(val):
    val.value = 3

if __name__ == '__main__':
    val = multiprocessing.Value('i', 1)
    p = multiprocessing.Process(target=func, args=(val,))
    p.start()
    p.join()
    print(val.value)  # 输出3.14

通过

val = multiprocessing.Value('i', 1) 实现参数共享,其中'i' 表示共享值得类型,1 为值,其他得共享类型还有 ’f‘:浮点型,’d‘:double类型,如果要共享字符串可以这样使用:multiprocessing.Value('c', b'Hello')

通过Manger() 创建共享列表或者共享字典实现

import multiprocessing

def worker_func(shared_dict):
    # 在进程中修改共享的字符串
    shared_dict['text'] = 'World'


if __name__ == "__main__":
    # 创建共享数据管理器
    with multiprocessing.Manager() as manager:
        # 创建共享的字典
        shared_dict = manager.dict({'text': 'Hello'})

        # 启动一个进程,传递共享字典
        p = multiprocessing.Process(target=worker_func, args=(shared_dict,))
        p.start()
        p.join()

        # 在主进程中打印共享字符串
        print(shared_dict['text'])

上面代码通过创建共享字典得方式实现共享变量,创建共享列表可以这样创建:

shared_dict = manager.list(['text'])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值