如何在主要仍然在python中运行时使用线程来实时获取用户输入

时间:2015-08-02 05:29:29

标签: python multithreading

在WHILE循环中,我想运行两个函数,一个是基函数,每次都会运行,另一个是user_input函数,当用户输入'撤防时,程序可以运行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,当我键入撤防时,它可以打印撤防并打破它。

1 个答案:

答案 0 :(得分:1)

你真的需要更具体。为什么这些需要在线程中?您应该向我们展示您尝试过的内容,或者更详细地描述您要完成的任务。

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

已修改:根据您的帖子编辑和评论,这里有一些清理过的代码作为示例。

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'