Python中如何在代码中主动开启线程?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中如何在代码中主动开启线程?相关的知识,希望对你有一定的参考价值。
参考技术A 首先先定义线程,然后对象.start(),如果是线程池先定义线程池,给线程池分配任务他就运行了 参考技术B 在Python开启多线程,可以直接通过Tread对象来开启,也可以自定义类的形式来实现。1.通过Thread对象来进行创建
import threading
def sing():
for i in range(50):
print("唱歌")
def dance():
for i in range(50):
print("跳舞")
t1 = threading.Thread(target=sing)
t2 = threading.Thread(target=dance)
t1.start()
t2.start()
2.同自定义类来实现,使用继承的方式,继承Thread类,重写run方法,创建一个对象后,在调用start方法
import threading
class Dance(threading.Thread):
def run(self):
for i in range(50):
print("跳舞")
class Sing(threading.Thread):
def run(self):
for i in range(50):
print("唱歌")
d = Dance()
d.start()
s = Sing()
s.start()
写在这里的代码,整个都乱了顺序了。想看源码的话,了解一下黑马程序员社区,里面不仅有技术大牛的各种解答,还有很多项目操作的源码。
关于Java线程超时退出的问题.
小弟近来有个任务是这样的,JAVA主程序中开启一个线程,我希望在一定的时间范围内 如果这个线程还没有运行完,就采取一些方法主动将他干掉,试了网上很多的方法都没有用,顶多是能抛出个异常,通知一下超时,但是线程还是在继续运行。
请教各位大虾们该怎么解决啊!!!
就没有哪个神人,能解决这个问题么. 我开的这个线程可能是要和别的程序进行交互,交互过程中可能会卡死,所以我才想能不能采取一些方法将他主动停掉,你们介绍的方法都不行...
结贴了吧.
比如在出现异常的地方:
threadA.interrupt();
而threadA的run方法中:
public void run()
while(true)
try
....
catch (InterruptedException)
break; //这样是可以的,如果没有break或者修改为continue则不行
也可以将这个放在while循环之外。
public void run()
try
while(true)
....
catch (InterruptedException)
....
本回答被提问者采纳 参考技术B class AutoCloseThread implements Runnable
private int limit;//限制
private Timer timer=new Timer();
@Override
public void run()
TimerTask task=new TimerTask()
@Override
public void run()
limit++;
if(limit>50) timer.cancel();
;
timer.schedule(task, 0, 1000);
timer.schedule(task, 0);
shaoyunlu 2010-7-13 17:31:19
timer.schedule(task, 0, 1000);
timer.schedule(task, 0);
这两个 要一起写?
军 2010-7-13 17:44:31
不是
军 2010-7-13 17:44:43
timer.schedule(task, 0, 1000);
timer.schedule(“webservice”, 0);
参考资料:还有其他问题的话,给我发百度消息
参考技术C java.util.concurrent.Future默认实现java.util.concurrent.FutureTask
你去查一下有关这个类的用法吧,他能满足你的要求。
或者java.util.concurrent.ExecutorService这个线程池也行。 参考技术D 线程中run()写法类似下面
public void run()
....
while(t<毫秒)
{
。。。。。
}//程序结束
}
在while里设置线程停止条件,我这个是判断时间。也可以设置一个标识,例如:
public void run()
boolean isEnd = false;
.....
while(isEnd == false)
if(....)
isEnd = true;
break;
......
有空看看《JAVA多线程设计》,好书,结合设计模式讲的JAVA多线程。浅显易懂
===============补充你的补充问题==============
你既然说是想主动停掉。这个意思已经很明显了,你现在的问题只是,你在代码设计思路上陷入死循环了。
所谓主动停掉就是到了指定的条件,程序自然死亡结束。你要做的就是写一个销毁方法,将线程结束的所有操作都写在里面,包括你调用或交互的其它程序结束方法。然后在指定条件下调用这个销毁操作。我不知道我说的明白不?
以上是关于Python中如何在代码中主动开启线程?的主要内容,如果未能解决你的问题,请参考以下文章