【问题标题】:How to use threading to get user input realtime while main still running in python如何在main仍在python中运行时使用线程实时获取用户输入
【发布时间】:2015-10-24 11:20:19
【问题描述】:

在WHILE循环中,我想运行两个函数,一个是基本函数,每次都会运行,另一个是user_input函数,当用户输入'disarm'时,程序可以运行user_input函数。 这两个函数需要在 WHILE 循环中才能一直运行。

我该如何编写一个函数来完成这个?

因为它是实时的,所以我不能在线程中添加 time.sleep。

谢谢。

import threading

class BackInput(threading.Thread):
    def __init__(self):
        super(BackInput, self).__init__()


    def run(self):
        self.input = raw_input()

while True:
    threading1 = BackInput()
    threading1.start()
    threading1.join()
    if threading1.input == 'disarm':
        print 'Disarm'
        break
    print 'Arm'

在这段代码中,程序应该每秒打印一次 Arm,当我输入 disarm 时,它可以打印 Disarm 并中断它。

【问题讨论】:

标签: python multithreading


【解决方案1】:

您确实需要更具体。为什么这些需要在线程中?您应该向我们展示您的尝试,或者更详细地描述您想要完成的目标。

在您当前的设置中,您将线程置于循环中,因此它不能独立于每个用户输入运行。

已编辑:这里有一些清理后的代码作为示例,基于您的帖子编辑和 cmets。

import threading
import time
import sys

def background():
        while True:
            time.sleep(3)
            print 'disarm me by typing disarm'


def other_function():
    print 'You disarmed me! Dying now.'

# now threading1 runs regardless of user input
threading1 = threading.Thread(target=background)
threading1.daemon = True
threading1.start()

while True:
    if raw_input() == 'disarm':
        other_function()
        sys.exit()
    else:
        print 'not disarmed'

【讨论】:

  • 您好,感谢您的建议。我想在while循环中运行两个函数,一个是我的基本函数,它会一直运行,另一个函数是输入函数,当用户输入撤防时,程序将运行输入函数,否则程序仍然运行基本函数。我怎么能用python完成这个?谢谢:)
  • 你把它放在一个循环中,它会在每次循环运行时运行,在你的例子中你启动一个线程,加入它,然后要求用户输入。在当前示例中,您并没有“一直”运行任何东西。如果您希望一个函数在程序运行的整个过程中运行,并且能够接受用户输入来运行另一个函数,请像我在第二个示例中所做的那样。它将立即启动另一个线程并继续运行,在此示例中,它甚至会在任何用户输入时运行,直到他们键入运行 other_function() 的指定“解除武装”,然后关闭程序。
  • 感谢您耐心的建议。我已经测试了你的第二个并在 BackInput 中添加了 print 'arm',似乎只打印了一次 arm,它一直在运行吗?
  • 那是因为你只打印了一次。根据您的帖子编辑和 cmets 查看我的编辑。使用线程构造函数更清晰,在这里我向您展示了它可以与任何用户输入同时运行的 while 循环和 time.sleep()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多