在一些帮助下,我可以在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()
答案 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)
对于更严重的情况-考虑使用Managers和Synchronization primitives。