python中进程和主要任务之间的共享内存

时间:2019-01-21 20:49:47

标签: python python-multiprocessing

在一些帮助下,我可以在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()

1 个答案:

答案 0 :(得分:2)

在简化情况下,您只是在初始化时传递了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)

对于更严重的情况-考虑使用ManagersSynchronization primitives