本文目錄一覽:
- 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()
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/306144.html