死循环中的多处理

multiprocessing in a dead loop

我想要一个 运行 与后台其他进程并行的函数,这样当我单击 ctrl+a 时,字母设置为 a。但是,我尝试使用 multiprocessing,它不会从函数中继续,而且当我单击 ctrl+b 一次时它也会产生一个死循环。

from multiprocessing import Process
import keyboard as kb
def AOrB():
    while True:
        if kb.is_pressed("ctrl+a"):
            letter = "a"
            print(letter)
        if kb.is_pressed("ctrl+b"):
            letter = "b"
            print(letter)

def main():
# Other codes
    p = Process(target=AOrB())
    p.start()
    p.join()

    # Other codes

if __name__ == '__main__':
    main()

现在单击一次 ctrl+b 会生成:

b
b
b
b
b
b
b
b

问题是您在将函数指定为 Process 中的目标时调用了该函数。这会导致您的程序在 Process(target=AOrB())

挂起

试试这个:

p = Process(target=AOrB)

编辑:

这里是完整的代码,只输出一次密钥:

from multiprocessing import Process
import keyboard as kb
letter = ""
def AOrB():
    global letter
    while True:
        if kb.is_pressed("ctrl+a"):
            if letter != "a":
                letter = "a"
                print(letter)
        if kb.is_pressed("ctrl+b"):
            if letter != "b":
                letter = "b"
                print(letter)

def main():
# Other codes
    p = Process(target=AOrB)
    p.start()
    p.join()

    # Other codes

if __name__ == '__main__':
    main()