首页 > 解决方案 > python中进程和主任务之间的共享内存

问题描述

在一些帮助下,我可以在 python 中运行一个进程,现在我不想在这两个任务之间共享一个值。我可以在 init 中设置值,但不能在 run 方法中更改它。

顺便说一句:当主进程停止时如何杀死进程?

from multiprocessing import Process, Value

import serial
import time


class P(Process):
    def __init__(self, num):
        num.value = 15
        super(P, self).__init__()
    def run(self):
        while True:
            num.value = num.value + 1
            print("run simple process")
            time.sleep(0.5)

def main():
    while True:
        print("run main")
        print (num.value)
        time.sleep(2.5)


if __name__ == "__main__":
    num = Value('d', 0.0)
    p = P(num)
    p.start()
    #p.join()
    main()

标签: pythonpython-multiprocessing

解决方案


在您的简化情况下,您只是在初始化时传递num值。 为了能够在其他进程的方法中访问该值 - 将其设置为进程的状态

class P(Process):
    def __init__(self, num):
        self.num = num
        self.num.value = 15
        super(P, self).__init__()

    def run(self):
        while True:
            self.num.value += 1
            print("run simple process")
            time.sleep(0.5)

对于更“严重”的情况 - 考虑使用管理器和同步原语


推荐阅读