gpt4 book ai didi

python - 带线程的交互式脚本

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:17 24 4
gpt4 key购买 nike

我试图用一个线程将阻塞调用包装在 pyaudio 中,以便通过队列提供非阻塞访问。但是,我遇到的问题不是 pyaudio 或队列,而是尝试测试线程的问题。为了与“将示例精简到尽可能少”保持一致,所有 pyaudio 内容都消失了,只留下线程类及其在 main 中的实例化。

我所希望的是一个我可以创建的对象,然后在后台继续处理它的东西,同时我用控制台或 tk 控制事物。我认为下面的最大精简示例应该让线程执行某些操作,而 main 运行并询问我它是否正在工作。 raw_input 提示永远不会出现。如果我从 IDLE 运行它,我不会对此感到惊讶,因为 IDLE 不是线程安全的,但如果我直接从操作系统运行脚本,我会得到相同的行为。我准备看到原始输入提示在“运行”打印插入下消失在屏幕上,但即使这样也没有发生。提示永远不会出现。这是怎么回事?它确实响应 ctrl-C 和关闭窗口,但我仍然希望能够看到主运行。

import threading
import time

class TestThread(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.running=True
self.run()

def run(self):
while self.running:
time.sleep(0.5)
print 'running'

def stop(self):
self.running=False

if __name__=='__main__':

tt=TestThread()
a=raw_input('simple stuff working ? -- ')
tt.stop()

最佳答案

您应该使用 self.start() 而不是 self.run() 来启动线程。在这种情况下,您只是像任何其他普通函数一样运行线程函数。

关于python - 带线程的交互式脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com