python - 主循环旁边的多处理

标签 python multiprocessing

一段时间以来,我一直在为一个问题而苦苦挣扎。 我正在构建一个使用主循环的小脚本。这是一个需要用户注意的过程。用户对步骤做出响应,然后使用某些功能会发生一些神奇的事情

除此之外,我想生成另一个进程来监视计算机系统的某些特定事件,例如按下特定键。如果这些事件发生,那么它将启动与用户输入正确值时相同的功能。

所以我需要做两个过程: -主循环(允许用户交互) - 后台“事件扫描器”,搜索特定事件,然后对其使用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/

相关文章:

python - 在Elasticsearch上获得连接错误

Python 如何使用 __wrapped__ 键入提示 Callable

Python setuptools 自定义配置

python - 如何使用venv解决Python 3.7.2中的多处理停止工作问题

Python 多处理守护进程与非守护进程与主进程

python - 使用多处理检测多个子进程的终止

python - python会使用multiprocessing.sharedctypes收集共享内存中分配的内存吗?

Python 2.7 - 计算每行的分位数

Python 多处理示例。永不终止

python - 使用 matplotlib 创建 100% 堆积面积图