本文目录一览:
- 1、如何查看python脚本自动退出原因
- 2、python pyqt5在使用多线程时自动退出是怎么回事?
- 3、Python中如何在一段时间后停止程序
- 4、Python程序运行后直接退出
- 5、python在重命名时黑框出现闪退
- 6、mac本使用opencv打开摄像头导致python意外退出?
如何查看python脚本自动退出原因
怎么样的自动退出。。。如果是直接双击.py文件的话,本来就是会在python for DOS里面运行完自动退出的,只要在代码结尾加一句raw_input()就好了
python pyqt5在使用多线程时自动退出是怎么回事?
线程只执行一次……让我来猜一猜。
你可能会认为创建一个线程去执行某个动作就完事了?
一段代码不管是在主线程里还是在新建的线程里,它都是按代码本身的规则那么执行的,该循环就循环,该结束就结束。
所以,我们建立一个线程去执行某个动作,主要就是让这个动作的执行不影响主程的执行,不要因为它导致主程序的某环节等待这个动作的结果。
举例来说,一个定时3秒去读一下某个文件,总不能做个循环,读一下文件,然后sleep3秒吧,那除了这个,什么也干不了,基本都是在【等待3秒】这里耗着了。解决办法就是做个线程去完成【读某个文件】,然后这个事完了之后、前再建一个同样的线程让它三秒后执行。
看下图:
这个sort_loop就是这样干的:
【红框2】就是主要的工作内容(对self.data进行收缩)
如果简简单单的就这,那它就执行一次就完事了,哪怕你把sort_loop放到新线程里,也是一样。
要在sort_loop里再新建一个线程,新线程还是执行sort_loop,于是就是这样的:
A把桌子擦了擦,把抹布塞给了B;
B把桌子擦了擦,把抹布塞给了C;
C把桌子擦了擦,把抹布塞给了D...
这才构成一个线程循环。
Python中如何在一段时间后停止程序
用到threading的Timer,也类似单片机那样子,在中断程序中再重置定时器,设置中断,python实例代码如下:
import threading
import time
def change_user():
print('这是中断,切换账号')
t = threading.Timer(3, change_user)
t.start()
#每过3秒切换一次账号
t = threading.Timer(3, change_user)
t.start()
while True:
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都重启了(RESTART Shell)。
Python程序运行后直接退出
returnbreak都可以终止函数的运行exit(0)#无错误退出exit(1)#有错误退出这两条语句一般都会加在程序的最后因为exit是迫使系统去终止程序的运行
python在重命名时黑框出现闪退
重命名时黑框出现闪退。
第一步首先找到我们平时编辑python后,将文件储存的所在文件夹的位置,尝试下双击,看是否能打开。第二步如果打不开或者闪退,可以尝试选择打开方式,选择Python应用程序或者文本编译器看看是否能够打开文件。如果尝试了双击,未打开,接着选择打开方式pthon,还是失败。然后选择平时的文本编译器Geany,成功打开了命名为comment。py的python文件。
第三步尝试用文本编译器执行该python文件,看看能否运行。结果显示可以成功运行。第四步尝试在完成后的程序末尾加上函数input(),加入这个函数后,相当于在等待你输入,这是一个还未完结的程序。再选择保存。第五步退出geany编译器,再次找到该python文件,尝试双击或者选择python程序打开该文件。问题就解决了。
mac本使用opencv打开摄像头导致python意外退出?
我再win上测试没有问题,
import cv2
cap = cv2.VideoCapture(0)
while 1:
ret, frame = cap.read()
k = cv2.waitKey(1)
if k == 27:
break
cv2.imshow("capture", frame)
cap.release()
cv2.destroyAllWindows()
实在不行试试cv+pygame
代码如下:
import pygame
import cv2
cap = cv2.VideoCapture(0)
ret, img = cap.read()
if not ret:
print("Can't read stream")
img = cv2.transpose(img)
print('shape:', img.shape)
pygame.init()
screen = pygame.display.set_mode((img.shape[0],img.shape[1]))
surface = pygame.surface.Surface((img.shape[0], img.shape[1]))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
ret, img = cap.read()
if not ret:
running = False
break
else:
img = cv2.transpose(img)
pygame.surfarray.blit_array(surface, img)
screen.blit(surface, (0,0))
pygame.display.flip()
pygame.quit()