一段时间以来,我一直在为一个问题而苦苦挣扎。 我正在构建一个使用主循环的小脚本。这是一个需要用户注意的过程。用户对步骤做出响应,然后使用某些功能会发生一些神奇的事情
除此之外,我想生成另一个进程来监视计算机系统的某些特定事件,例如按下特定键。如果这些事件发生,那么它将启动与用户输入正确值时相同的功能。
所以我需要做两个过程: -主循环(允许用户交互) - 后台“事件扫描器”,搜索特定事件,然后对其使用react。
我通过启动一个主循环和一个守护进程多进程来尝试这个。问题是,当我启动后台进程时,它会启动,但之后我不会启动主循环。 我稍微简化了一切以使其更清晰:
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
,并且该调用永远不会返回。
关于python - 主循环旁边的多处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15429323/