如何在Python中多次调用线程?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在Python中多次调用线程?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1770字,纯文字阅读大概需要3分钟。
内容图文
![如何在Python中多次调用线程?](/upload/InfoBanner/zyjiaocheng/705/672e25d693a745daabffce5fdd049bb4.jpg)
如果这是一个愚蠢的问题,我很抱歉.我试图使用多个类的多线程来完成不同的工作,这涉及多次在不同的时间调用这些多线程.但我不确定使用哪种方法.代码如下所示:
class workers1(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
do some stuff
class workers2(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
do some stuff
class workers3(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
do some stuff
WorkerList1=[workers1(i) for i in range(X)]
WorkerList2=[workers2(i) for i in range(XX)]
WorkerList2=[workers3(i) for i in range(XXX)]
while True:
for thread in WorkerList1:
thread.run (start? join? or?)
for thread in WorkerList2:
thread.run (start? join? or?)
for thread in WorkerList3:
thread.run (start? join? or?)
do sth .
我试图让所有WorkerList中的所有线程同时开始运行,或者至少在同一时间开始运行.一旦它们全部终止,我想再次调用所有线程.
如果没有循环,我可以使用.start;但由于我只能开始一次线程,所以开始显然不适合这里.如果我使用run,似乎所有线程都按顺序启动,不仅是同一列表中的线程,还有来自不同列表的线程.
有人可以帮忙吗?
解决方法:
这里有很多误解:
>您只能启动一次线程的特定实例.但在你的情况下,for循环遍历一个线程的不同实例,每个实例被分配给循环中的变量线程,所以在每个线程上调用start()方法都没有问题. (您可以将其视为变量线程是列表中实例化的Thread()对象的别名)
> run()与join()不同:调用run()就像顺序编程一样. run()方法不启动新线程,它只是执行方法中的语句,就像任何其他函数调用一样.
> join()不会开始执行任何操作:它只等待一个线程完成.为了使join()能够正常运行一个线程,你必须首先在这个线程上调用start().
此外,您应该注意,一旦完成执行,您就无法重新启动线程:您必须重新创建线程对象才能再次启动它.让这个工作的一个解决方法是在run()方法结束时调用Thread .__ init __().但是,我不建议这样做,因为这将禁止使用join()方法来检测线程的执行结束.
内容总结
以上是互联网集市为您收集整理的如何在Python中多次调用线程?全部内容,希望文章能够帮你解决如何在Python中多次调用线程?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。