死循环中的多处理
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()
我想要一个 运行 与后台其他进程并行的函数,这样当我单击 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()