在学习python3,在类中使用多进程multiprocess库代码如下
from multiprocessing import Process
class x1:
def __init__(self):
self.l1 = [
'1', '2', '3'
]
self.p1 = Process(target=self.pop1, args=())
self.p1.start()
def pop1(self):
self.l1.pop(0)
if __name__ == '__main__':
xx = x1()
print(xx.l1)
意图是每次通过多进程模块运行pop1这个函数时,从x1类的l1这个属性列表里面弹出第一个值
按照我自己理解,最终print(xx.l1)这行代码打印出来的应该是一个列表['2', '3'],但实际打印出的东西是['1', '2', '3']
请问这是为什么?怎么解决?
测试1:如果不使用多进程,只是普通地调用pop1这个函数,最终打印出来的东西符合我的预期
测试2:如果在pop1函数内,每次pop完成后都打印列表,最终打印出的列表符合预期,但一旦再次用print(xx.l1)打印,打印出来的是最初的列表