A. python怎麼讓進程暫停
加個阻塞,條件ok後在繼續,可以用input()、多線程、多進程、協程等都可以。
B. python怎麼讓進程暫停
如果在linux運行,就跟普通程序一樣就行,查找pid,然後使用kill。如果實在windows,ctrl+alt+delete,打開任務管理器,查找進程,然後結束掉就可以了。
C. 為啥我按照python安裝教程,總說無法啟動此程序,因為計算機中丟失
應該是安裝的不正確,安裝好的程序文件有丟失所以導致程序無法運行,不一定是你的安裝不正確,也可能是你的安裝包有問題,你可以重新下載一個Python的安裝包,重新安裝試試。
D. 打開python保存的程序,窗口一閃就沒有了
運行結束了,cmd當然自動關掉了。
可以開始|運行|cmd|c:/python2.7/python.exe .../pathtoscript/script.py
可以打開idle,打開編寫好的py,f5運行
可以在py腳本最後加上一句等待輸入的句子比如raw_input()
。。。很多方法
E. 打開python保存的程序,窗口一閃就沒有了
加入下面2句讓程序暫停一下:
import os
os.system("pause")
運行的話,可以把你的python可執行文件的目錄加入環境變數,比如你的腳本名是test.py,直接單擊運行(如果關聯了文件的話),或者python test.py,如果python沒有在環境變數里,就必須提供python的可執行文件的完整路徑
F. Python:進程(threading)
這里是自己寫下關於 Python 跟進程相關的 threading 模塊的一點筆記,跟有些跟 Linux 調用挺像的,有共通之處。
https://docs.python.org/3/library/threading.html?highlight=threading#thread-objects
直接傳入
繼承 Thread 重寫 run 方法
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
group 線程組,未實現
start() 線程就緒
join([timeout]) 阻塞其他線程,直到調用這方法的進程結束或時間到達
RuntimeError: cannot join thread before it is started
get/setName(name) 獲取/設置線程名。
isAlive() 返回線程是否在運行。
is/setDaemon(bool): 獲取/設置是後台線程(默認前台線程(False))。(在start之前設置)
The entire Python program exits when no alive non-daemon threads are left.
沒有非後台進程運行,Python 就退出。
主線程執行完畢後,後台線程不管是成功與否,主線程均停止
t.start()
t.join()
start() 後 join() 會順序執行,失去線程意義
https://docs.python.org/3/library/threading.html?#lock-objects
Lock屬於全局,Rlock屬於線程(R的意思是可重入,線程用Lock的話會死鎖,來看例子)
acquire(blocking=True, timeout=-1) 申請鎖,返回申請的結果
release() 釋放鎖,沒返回結果
https://docs.python.org/3/library/threading.html#condition-objects
可以在構造時傳入rlock lock實例,不然自己生成一個。
acquire([timeout])/release(): 與lock rlock 相同
wait([timeout]): 調用這個方法將使線程進入等待池,並釋放鎖。調用方法前線程必須已獲得鎖定,否則將拋出異常。
notify(): 調用這個方法將從等待池挑選一個線程並通知,收到通知的線程將自動調用acquire()嘗試獲得鎖定(進入鎖定池);其他線程仍然在等待池中。調用這個方法不會釋放鎖定。調用方法前線程必須已獲得鎖定,否則將拋出異常。
notifyAll(): 調用這個方法將通知等待池中所有的線程,這些線程都將進入鎖定池嘗試獲得鎖定。調用這個方法不會釋放鎖定。使用前線程必須已獲得鎖定,否則將拋出異常。
threading.Semaphore(value=1)
https://docs.python.org/3/library/threading.html#semaphore-objects
acquire(blocking=True, timeout=None)
資源數大於0,減一並返回,等於0時等待,blocking為False不阻塞進程
返回值是申請結果
release()
資源數加1
https://docs.python.org/3/library/threading.html#event-objects
事件內置了一個初始為False的標志
is_set() 返回內置標志的狀態
set() 設為True
clear() 設為False
wait(timeout=None) 阻塞線程並等待,為真時返回。返回值只會在等待超時時為False,其他情況為True
https://docs.python.org/3/library/threading.html#timer-objects
threading.Timer(interval, function, args=None, kwargs=None)
第一個參數是時間間隔,單位是秒,整數或者浮點數,負數不會報錯直接執行不等待
可以用cancel() 取消
https://docs.python.org/3/library/threading.html#barrier-objects
threading.Barrier(parties, action=None, timeout=None)
調用的進程數目達到第一個設置的參數就喚醒全部進程
wait(timeout=None)
reset() 重置,等待中的進程收到 BrokenBarrierError 錯誤
G. python讀取進程隊列還沒讀完就退出了,為什麼
辦法很多。通常的辦法是,子線程出異常後,主進程檢查到它的狀態不正常,然後自己主動將其餘線程退出,最後自己再退出。這是穩妥的辦法。
另外的辦法是,某一個子線程專用於監控狀態。它發現狀態不對時,直接強制進程退出。辦法1,發消息給主進程,讓主進程退出。辦法2:用kill, pskill等方法,直接按進程PID殺進程。
H. python程序進程掛掉,該怎麼處理
1.可能還得看具體資料庫操作是什麼!有可能是內存溢出造成。建議先看看能否升級sqlite。
2.資料庫鏈接沒有被釋放,或者內存溢出都有可能。最上個項目,竟然發現python內存溢出,把伺服器的內存吃掉。可能是對象引用的問題。
希望能幫到你!
I. 為啥我按照python安裝教程,總說無法啟動此程序,因為計算機中丟失
這是你windows操作系統文件丟失造成的,和python無關。
首先去網上搜索下載api-ms-win-crt-process-l1-1-0.dll文件,下載完畢後,把dll文件放到C:\Windows\System32目錄下即可。
如果下載的dll文件無效,可以去microsoft官網下載安裝補丁:
KB2999226、KB3118401更新下載:
KB2999226
微軟下載鏈接
https://support.microsoft.com/en-us/help/2999226/update-for-universal-c-runtime-in-windows
KB3118401
微軟下載鏈接
https://support.microsoft.com/en-us/help/3118401/update-for-universal-c-runtime-in-windows
python教程