我现在正在为一个问题苦苦挣扎一段时间。
我正在构建一个使用主循环的小脚本。这是一个需要用户注意的过程。用户对步骤做出响应,然后使用某些功能会发生一些神奇的事情
除此之外,我想生成另一个进程来监视计算机系统的某些特定事件,例如按特定键。如果发生这些事件,它将启动与用户输入正确值时相同的功能。
所以我需要做两个过程:
-主循环(允许用户交互)
- 后台“事件扫描器”,搜索特定事件,然后对其做出反应。
我通过启动主循环和守护进程多处理进程来尝试此操作。问题是,当我启动后台进程时,它会启动,但之后我不会启动主循环。
我稍微简化了一切以使其更清晰:
import multiprocessing, sys, time
def main_loop():
while 1:
input = input('What kind of food do you like?')
print(input)
def test():
while 1:
time.sleep(1)
print('this should run in the background')
if __name__ == '__main__':
try:
print('hello!')
mProcess = multiprocessing.Process(target=test())
mProcess.daemon = True
mProcess.start()
#after starting main loop does not start while it prints out the test loop fine.
main_loop()
except:
sys.exit(0)
你应该做
mProcess = multiprocessing.Process(target=test)
代替
mProcess = multiprocessing.Process(target=test())
你的代码实际上调用test
在父进程中,并且该调用永远不会返回。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)