我正试图为Python编写一个模块,它为我的程序打印文本,并在后台执行某些操作时显示一个进度条。我目前正在使用'线程'模块,但如果有其他东西可以使它更容易接受建议。在
我想知道的是两个方面,我应该如何优雅地调用这个类,以及如何停止正在创建的线程?
这是我目前正在做的:
tmp1 = textprint("hello this is text")
tmp1.start()
# do something
tmp1.stop()
到目前为止,我考虑了以下几种选择:
使用线程名称找到线程的名称或拥有线程 返回一个名字然后杀死。或者传递一个类似的数字 之后进行螺纹标识。(有点麻烦,不是我的 最喜欢的解决方案。)
发送线程.事件? -从阅读文档中我看到一个事件可以 被送去,也许可以用来阻止它?在
或者一个with语句,但是我不清楚如何在这个上下文中使用它,而且我发现大多数python文档都非常混乱,根本不是为我编写的。
我想做的是:
echo('hello')
(打印进度条等)
-然后当我想停止它时echo.stop()
但问题是stop函数不知道它要停止哪个线程。在
下面是我要做的事情的一个框架:
^{pr2}$然后这样称呼它:
echo('this is text')
我想我也不得不这么做
import echo from print_text
WITH的方式建议输入__enter__
和{
如果可能有多个子线程同时运行同一个目标,并希望确保所有子线程都停止,则线程名称非常有用。这似乎是一个有用的概括,在我看来也不太麻烦,但美是在旁观者的眼中:-)。以下内容:
这是更简单的代码。它做你想要的吗?在
在Python中停止线程的最好方法是礼貌地要求它停止。向线程传递新数据的最佳方法是使用
Queue
模块。在这两种方法都在the code in this post中使用,它演示了从Python线程进行的套接字通信,但在其他方面与您的问题相关。如果仔细阅读代码,您会注意到:
threading.Event()
,这是由外部的方法调用设置的,线程会定期检查它是否被要求死。在Queue.Queue()
向线程传递命令和从线程接收响应。在你很快就有了工作代码。只需要做一些小改动:
print_text()
实例化t = print_text()
下面是一些工作代码,其中包括这些小的编辑:
相关问题 更多 >
编程相关推荐