pythony中子进程如果一定时间不结束就停止应该如何做

pythony中子进程如果一定时间不结束就停止应该如何做,第1张

你要用thread模块的话,要main里面sleep一段时间,如果子线程结束,直接走main下面的代码,子线程会自动被杀掉的。当然,这也是Thread模块的缺点,不管子进程是否结束,一旦继续走主线程,子线程统统杀掉。

如果你用threading模块的话,只要不给子线程设定为守护进程也会在执行main后杀掉子线程。

你这问题有点怪,别人都是要求怎样在执行main线程的时候子线程也不被杀。。。。。。

给个例子吧:

import thread

from time import sleep, ctime

def loop0():

print 'start loop 0 at:', ctime()

sleep(4)

print 'loop 0 done at:', ctime()

def loop1():

print 'start loop 1 at:', ctime()

sleep(2)

print 'loop 1 done at:', ctime()

def main():

print 'starting at:', ctime()

threadstart_new_thread(loop0, ())

threadstart_new_thread(loop1, ())

sleep(6)

print 'all DONE at:', ctime()

if __name__ == '__main__':

main()

这是python核心编程里面的例子,主线程会等待6秒,6秒之后,就继续走main程序(也就是主线程)下的print "all Done at:",ctime()了,子线程不管结没结束都杀掉。

这里是自己写下关于 Python 跟进程相关的 threading 模块的一点笔记,跟有些跟 Linux 调用挺像的,有共通之处。

>

等待串口数据导致线程自己sleep而没有机会执行,主线程的join没法继续,方法就是这样的,换成这个能执行

from threading import 

import time

 

class MyThread(Thread):

    def run (self):

        selfifdo = True;

        while selfifdo:

            print 'I am running'

            timesleep(01)

 

    def stop (self):

        print 'I will stop it'

        selfifdo = False;

 

tr = MyThread()

trsetDaemon(True)

trstart()

timesleep(1)

trstop()

trjoin()

这样就更直观了

from threading import 

import time

 

class MyThread(Thread):

    def run (self):

        selfifdo = True;

        while selfifdo:

            print 'I am running'

            timesleep(2)

 

    def stop (self):

        print 'I am stopping it'

        selfifdo = False;

 

tr = MyThread()

trsetDaemon(True)

trstart()

print 'I will stop it'

timesleep(5)

trstop()

trjoin()

以上就是关于pythony中子进程如果一定时间不结束就停止应该如何做全部的内容,包括:pythony中子进程如果一定时间不结束就停止应该如何做、Python:进程(threading)、弱问python的问题.怎么终止一个子线程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10146028.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存