我正在尝试共享对列表的访问权限,每次按下热键 'q'时,我都想追加并获得与每次按下时处理 ['something'] 相同的结果,而是输出进程b是 [] 而不是 ['something'] 等。
from multiprocessing import Process
from pynput import keyboard
from time import sleep
list1 = list()
def on_press(key):
if str(key).replace("'", '') == 'q':
list1.append('something')
print(f'process a: {list1}')
def keysinput():
global listener
while True:
with keyboard.Listener(on_press=on_press) as listener:
listener.join()
def printsharedlist():
while True:
print(f'process b: {list1}')
sleep(3)
if __name__ == '__main__':
a = Process(target=keysinput)
a.start()
b = Process(target=printsharedlist)
b.start()
按'q'后输出
process a: []
process b: ['something']
按“q”后预期
process a: ['something']
process b: ['something']