在执行x时,我使用下面的代码打印y和Move_Relative()坐标。移动相对函数似乎没有被执行,因为在执行结束时,我的输出是(x = 0和y = 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()发布于 2022-09-02 15:03:19
全局变量在进程之间不共享。一个很好的选择是使用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.0https://stackoverflow.com/questions/73584433
复制相似问题