Python程序运行后直接退出returnbreak都可以终止函数的运行exit(0)#无错误退出exit(1)#有错误退出这两条语句一般都会加在程序的最后因为exit是迫使系统去终止程序的运行 Python中如何在一段时间后停止程序用到threading的Timer,也类似单片机那样子,在中断程序中再重置定时器,设置中断,python实例代码如下:i...
python进程运行多少时间自动退出
导读:今天首席CTO笔记来给各位分享关于python进程运行多少时间自动退出的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
Python程序运行后直接退出returnbreak都可以终止函数的运行exit(0)#无错误退出exit(1)#有错误退出这两条语句一般都会加在程序的最后因为exit是迫使系统去终止程序的运行
Python中如何在一段时间后停止程序用到threading的Timer,也类似单片机那样子,在中断程序中再重置定时器,设置中断,python实例代码如下:
importthreading
importtime
defchange_user():
?print('这是中断,切换账号')
?t=threading.Timer(3,change_user)
?t.start()
#每过3秒切换一次账号
t=threading.Timer(3,change_user)
t.start()
whileTrue:
?print('我在爬数据')
?time.sleep(1)
扩展资料
有时当一个条件成立的情况下,需要终止程序,可以使用sys.exit()退出程序。sys.exit()会引发一个异常:
1、如果这个异常没有被捕获,那么python编译器将会退出,后面的程序将不会执行。
2、如果这个异常被捕获(try...except...finally),捕获这个异常可以做一些额外的清理工作,后面的程序还会继续执行。
注:0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。另一种终止程序的方法os._exit()
一般情况下使用sys.exit()即可,一般在fork出来的子进程中使用os._exit()
采用sys.exit(0)正常终止程序,程序终止后shell运行不受影响。
采用os._exit(0)关闭整个shell,调用sys._exit(0)后整个shell都重启了(RESTARTShell)。
Python:进程(threading)这里是自己写下关于Python跟进程相关的threading模块的一点笔记,跟有些跟Linux调用挺像的,有共通之处。
直接传入
继承Thread重写run方法
threading.Thread(group=None,target=None,name=None,args=(),kwargs={},*,daemon=None)
group线程组,未实现
start()线程就绪
join([timeout])阻塞其他线程,直到调用这方法的进程结束或时间到达
RuntimeError:cannotjointhreadbeforeitisstarted
get/setName(name)获取/设置线程名。
isAlive()返回线程是否在运行。
is/setDaemon(bool):获取/设置是后台线程(默认前台线程(False))。(在start之前设置)
TheentirePythonprogramexitswhennoalivenon-daemonthreadsareleft.
没有非后台进程运行,Python就退出。
主线程执行完毕后,后台线程不管是成功与否,主线程均停止
t.start()
t.join()
start()后join()会顺序执行,失去线程意义
Lock属于全局,Rlock属于线程(R的意思是可重入,线程用Lock的话会死锁,来看例子)
acquire(blocking=True,timeout=-1)申请锁,返回申请的结果
release()释放锁,没返回结果
可以在构造时传入rlocklock实例,不然自己生成一个。
acquire([timeout])/release():与lockrlock相同
wait([timeout]):调用这个方法将使线程进入等待池,并释放锁。调用方法前线程必须已获得锁定,否则将抛出异常。
notify():调用这个方法将从等待池挑选一个线程并通知,收到通知的线程将自动调用acquire()尝试获得锁定(进入锁定池);其他线程仍然在等待池中。调用这个方法不会释放锁定。调用方法前线程必须已获得锁定,否则将抛出异常。
notifyAll():调用这个方法将通知等待池中所有的线程,这些线程都将进入锁定池尝试获得锁定。调用这个方法不会释放锁定。使用前线程必须已获得锁定,否则将抛出异常。
threading.Semaphore(value=1)
acquire(blocking=True,timeout=None)
资源数大于0,减一并返回,等于0时等待,blocking为False不阻塞进程
返回值是申请结果
release()
资源数加1
事件内置了一个初始为False的标志
is_set()返回内置标志的状态
set()设为True
clear()设为False
wait(timeout=None)阻塞线程并等待,为真时返回。返回值只会在等待超时时为False,其他情况为True
threading.Timer(interval,function,args=None,kwargs=None)
第一个参数是时间间隔,单位是秒,整数或者浮点数,负数不会报错直接执行不等待
可以用cancel()取消
threading.Barrier(parties,action=None,timeout=None)
调用的进程数目达到第一个设置的参数就唤醒全部进程
wait(timeout=None)
reset()重置,等待中的进程收到BrokenBarrierError错误
pythony中子进程如果一定时间不结束就停止应该如何做?你要用thread模块的话,要main里面sleep一段时间,如果子线程没结束,直接走main下面的代码,子线程会自动被杀掉的。当然,这也是Thread模块的缺点,不管子进程是否结束,一旦继续走主线程,子线程统统杀掉。
如果你用threading模块的话,只要不给子线程设定为守护进程也会在执行main后杀掉子线程。
你这问题有点怪,别人都是要求怎样在执行main线程的时候子线程也不被杀。。。。。。
给个例子吧:
importthread
fromtimeimportsleep,ctime
defloop0():
print'startloop0at:',ctime()
sleep(4)
print'loop0doneat:',ctime()
defloop1():
print'startloop1at:',ctime()
sleep(2)
print'loop1doneat:',ctime()
defmain():
print'startingat:',ctime()
thread.start_new_thread(loop0,())
thread.start_new_thread(loop1,())
sleep(6)
print'allDONEat:',ctime()
if__name__=='__main__':
main()
这是python核心编程里面的例子,主线程会等待6秒,6秒之后,就继续走main程序(也就是主线程)下的print"allDoneat:",ctime()了,子线程不管结没结束都杀掉。
结语:以上就是首席CTO笔记为大家介绍的关于python进程运行多少时间自动退出的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。
2024-09-18