我想创建一个python脚本,它打印出来自一个线程的消息,同时仍然等待你输入另一个线程。这可能吗?如果是这样,怎么样?
系统:Windows 7
语言:Python 2.7
我试过这个(从另一个问题修改):
import threading
import time
def message_loop():
while True:
time.sleep(1)
print "Hello World"
thread = threading.Thread(target = message_loop)
thread.start()
while True:
input = raw_input("Prompt> ")
但是会发生的事情是:程序在输出Hello World
之前等待我完成输入。
答案 0 :(得分:2)
绝对可能。如果你有一个打印输出的函数(我们称之为print_output
),你可以使用threading
模块在另一个线程中启动它:
>>> import threading
>>> my_thread = threading.Thread(target=print_output)
>>> my_thread.start()
您现在应该开始获取输出了。然后,您可以在主线程上运行输入位。您也可以在新线程中运行它,但在主线程中运行输入有一些优点。
答案 1 :(得分:2)
这对我有用。 在输入“ q”之前,代码将显示消息
import threading
import time
def run_thread():
while True:
print('thread running')
time.sleep(2)
global stop_threads
if stop_threads:
break
stop_threads = False
t1 = threading.Thread(target=run_thread)
t1.start()
time.sleep(0.5)
q = ''
while q != 'q':
q = input()
stop_threads = True
t1.join()
print('finish')