python如何在多线程下完成键盘输入

我建立了两个无限循环,然后让多线程同时进行这两个循环,如果我要获取键盘输入之类的操作,该怎么进行修改代码呢?下边是我写的内容,但运行结果不对(遇到input后线程1直接被阻塞了……)
import threading
import time

def circle_1():
    while(True):
        print("线程_1")
        if(input() == 0):
            break
        time.sleep(0.1)

def circle_2():
    while(True):
        print("线程_2")
        time.sleep(0.1)

thread1 = threading.Thread(target=circle_1)
thread1.start()
thread2 = threading.Thread(target=circle_2)
thread2.start()
运行结果如下:

img

怎么修改才在多线程下完成键盘输入呢?

我给另一个例子你看看参考一下吧,是一个实际应用,多线程生成随机4位字符串,然后通过外部输入中断线程

import string
import threading
import time
import random

loop = True
def createStr(n,thread_num):
    global loop
    while loop:
        str = random.sample(string.ascii_letters + string.digits, n)
        print(thread_num,'---------',''.join(str).lower())
        time.sleep(1)

def stop():
    global loop
    q = input()
    if q =='q':
        loop = False
        
t1 = threading.Thread(target=createStr,  args=(4,1,))
t1.start()

t2 = threading.Thread(target=createStr, args=(4,2,))
t2.start()

t3 = threading.Thread(target=stop,  args=())
t3.start()

键盘输入肯定是主线程来响应的,你不可以把键盘输入搞到子线程里面去
此外,如果你想随时输入,那就不能不停输出
否则把你输入的内容冲的七零八落

子线程键入会有问题,报错EOF error
建议子线程的输入改成用变量传入

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632