我怎样才能动态地改变list的值,使它每秒输出一个列表,其中最后一个元素是前一个列表的最后一个元素的2倍。
import time, multiprocessing
lis = [1, 2, 4]
def printer():
while True:
print(lis)
time.sleep(1)
def updater():
while True:
time.sleep(1)
lis.append(lis[-1]*2)
if __name__ == '__main__':
process1 = multiprocessing.Process(target=updater)
process2 = multiprocessing.Process(target=printer)
process1.start()
process2.start()
process1.join()
process2.join()
我需要输出像这样的东西
[1, 2, 4]
[1, 2, 4, 8]
[1, 2, 4. 8. 16]
[1, 2, 4, 8, 16, 32]
.
.
但现在的输出是
[1, 2, 4]
[1, 2, 4]
[1, 2, 4]
[1, 2, 4]
.
.
我尝试使用global lis
,但也不起作用。
1条答案
按热度按时间zpf6vheq1#
可以使用
multiprocessing.Manager
实现所需的行为。管理器提供了一种创建可在不同进程之间共享的数据的方法。您可以在此处阅读更多信息。
根据服务器进程部分的示例,您可以如下重写代码: