|
刚开始用python编程,需要用到并发处理,所以想用线程来解决。程序主题是等待用户输入,同时启动一个线程来不停处理其他事务。自己实践了一下,下面是代码:
import threading, time, sys
def fun1():
while True:
print("this is thread 1~!")
time.sleep(1)
if quit:
break
quit=0
t=threading.Thread(target=fun1, args=())
t.start()
while True:
x=input("input please:")
if x == "exit" :
quit=1
break
else:
print(x)
time.sleep(5)
t.join()
sys.exit()
但是,测试下来发现一个严重的问题,当主程序被阻塞在等待用户输入的语句时,子线程也同时被阻塞了而不是预想的在后台继续运行。只有当主程序通过类似于sleep之类的睡眠语句放弃cpu使用权时子线程才能正常运行。所以,想请教各位,这是怎么回事儿?有没有什么解决方案?多谢~! |
|