如何在python中使用多处理来监控机械臂的坐标



在执行Move_Relative()的同时,我使用下面的代码打印了我的xy坐标。移动相对函数似乎没有执行,因为在执行结束时,我的输出是(x = 0y = 0(。我做错了什么?

import multiprocessing
from multiprocessing import Pool
import sys
x = 0
y = 0

def monitor_coordinates():
global x
global y
print("x: " + str(x) + " y: " + str(y))


def Move_Relative():    
global x
global y
while x < 100000:
x = x + 1   
y = y + 0.5
if __name__=='__main__':

q = multiprocessing.Process(target = Move_Relative) 
q.start()
p = multiprocessing.Process(target = monitor_coordinates)    
p.start()

q.join()
p.join()

全局变量不在进程之间共享。一个好的替代方案是使用multiprocessing.Value

import multiprocessing
from multiprocessing import Pool, Value
import sys
x = Value('d', 0)
y = Value('d', 0)

def monitor_coordinates(x, y):
print("x: " + str(x.value) + " y: " + str(y.value))

def Move_Relative(x, y):
while x.value < 100000:
x.value = x.value + 1
y.value = y.value + 0.5

if __name__ == '__main__':
q = multiprocessing.Process(target=Move_Relative, args=(x, y))
q.start()
p = multiprocessing.Process(target=monitor_coordinates, args=(x, y))
p.start()
q.join()
p.join()

输出:

x: 88826.0 y: 44413.0

最新更新