本文目錄一覽:
- 1、python怎麼讓進程暫停
- 2、Python 腳本運行的時候怎麼暫停
- 3、python程序如何讓其暫停
- 4、讓Python腳本暫停執行的幾種方法求解
- 5、Python中如何在一段時間後停止程序
- 6、python 暫停幾秒執行下一步、
python怎麼讓進程暫停
您的意思是要將進程掛起(Suspend) 而非 阻塞(Block)
如果用sleep() 進程將阻塞
假設進程下有兩個線程 那麼這兩個線程會繼續運行
要使進程掛起 可以考慮使用psutil
import psutil
p = psutil.Process(pid)
p.suspend() #掛起進程
p.resume() #恢復進程
為了證明效果 我寫了一個簡單的進程Process
其下有兩個線程 讀者Reader 和 寫者Writer(簡單的讀者寫者問題)
Process:
import threading
from time import ctime, sleep
import ThreadInReadAndWriteProblem
import multiprocessing
import os
class Process(multiprocessing.Process):
def __init__(self):
multiprocessing.Process.__init__(self) #手動實現父類
pid = os.getpid()
def run(self):
print ‘當前運行進程PID : %s ‘ %self.pid #子線程的id與父進程的pid相同 屬於 同一個進程
for i in range(0,5):
r = ThreadInReadAndWriteProblem.Reader()
w = ThreadInReadAndWriteProblem.Writer()
w.start()
r.start()
print ‘進程阻塞’
sleep(10) #總共運行時間10秒
ReaderWriter
import threading
from time import ctime, sleep
import os
mutex = threading.Lock() #互斥鎖
mutex_readercount = threading.Lock() #計數時的互斥 計算當前正在讀的數目
readerCount = 0 number = 0
#不滿足條件的 進入阻塞狀態
class Reader(threading.Thread): #讀者
def __init__(self):
threading.Thread.__init__(self) #繼承父類構造函數
def run(self):
global mutex
global readerCount
#print ‘線程PID: %s ‘ %os.getpid()
while True:
mutex_readercount.acquire()
readerCount +=1
if readerCount == 1:
print ‘讀者進程等待中,編號%s’ %(self.name)
mutex.acquire() == False # 第一個需要申請
mutex_readercount.release()
print ‘開始讀 , 讀者編號 %s ,現在時間是 %s’ %(self.name,ctime())
sleep(2)
print ‘完成讀 , 讀者編號 %s , 現在時間是 %s’ %(self.name,ctime())
mutex_readercount.acquire()
readerCount -= 1
if readerCount == 0: #所有讀者均完成
print ‘最後一個讀者完成讀 ‘
mutex.release()
mutex_readercount.release()
class Writer(threading.Thread): #寫者
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global mutex
global writerCount
#print ‘線程PID: %s’ %os.getpid()
while True:
print ‘寫者進程等待中 編號: %s’ %(self.name)
mutex.acquire()
print ‘開始寫 編號:%s 現在時間是: %s ‘ %(self.name,ctime())
sleep(5)
print ‘結束寫 編號: %s 現在時間是 %s’ %(self.name,ctime())
mutex.release()
測試程序
import ThreadInReadAndWriteProblem
import SingleProcessSchedulerMultiprocess
import psutil
import Scheduler
from time import ctime, sleep
def main():
p = SingleProcessSchedulerMultiprocess.Process()
p.start()
sleep(3)
stop(p.pid)
print ‘進程掛起 %s’ %ctime()
sleep(5)
wake(p.pid)
print ‘喚醒進程 %s’ %ctime()
def stop(pid):
print ‘進程暫停 進程編號 %s ‘ %(pid)
p = psutil.Process(pid)
p.suspend()
def wake(pid):
print ‘進程恢復 進程編號 %s ‘ %(pid)
p = psutil.Process(pid)
p.resume()
if __name__ == ‘__main__’:
main()
結果:
當前運行進程PID : 3096
寫者進程等待中 編號: Thread-2
開始寫 編號:Thread-2 現在時間是: Mon Nov 30 21:12:12 2015
讀者進程等待中,編號Thread-1
寫者進程等待中 編號: Thread-4
進程阻塞
寫者進程等待中 編號: Thread-6
寫者進程等待中 編號: Thread-8
寫者進程等待中 編號: Thread-10
進程暫停 進程編號 3096
進程掛起 Mon Nov 30 21:12:15 2015
進程恢復 進程編號 3096
喚醒進程 Mon Nov 30 21:12:20 2015
結束寫 編號: Thread-2 現在時間是 Mon Nov 30 21:12:20 2015
寫者進程等待中 編號: Thread-2
開始讀 , 讀者編號 Thread-1 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-3 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-5 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-7 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-9 ,現在時間是 Mon Nov 30 21:12:20 2015
完成讀 , 讀者編號 Thread-1 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-3 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-5 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-7 , 現在時間是 Mon Nov 30 21:12:22 2015
Python 腳本運行的時候怎麼暫停
直接用 pycharm 在循環的地方設置兩個斷點,用 debug 模式的 step over 來跑就行了。
python程序如何讓其暫停
你是ython3還是Python2?它們運行暫停的方法也有所不同,以python3為例:
1、input();
這種方法不用包含模塊,因此這也是最常用的一種暫停手段。
Python2中的raw_input()和input()語句在Python3中已經被合併到input()中。
2、os.system(“pause”);
這種方法需要包含os模塊(import os),在windows下IDLE運行會彈出cmd命令行,
進行暫停操作,直接運行.py文件會直接在命令行中暫停。
3、time.sleep(“second”);
這種方法需要包含time模塊(import time),second是自定義的時間長短,根據實際情況,
讓Python腳本暫停執行的幾種方法求解
參考文檔原文:
Suspend execution for the given number of seconds. The argument may be a floating point number to indicate a more precise sleep time. The actual suspension time may be less than that requested because any caught signal will terminate thesleep()following execution of that signal’s catching routine. Also, the suspension time may be longer than requested by an arbitrary amount because of the scheduling of other activity in the system.大意:讓程序執行暫停指定的秒數,參數可以是浮點型以指定精確的時間,但是程序真正暫停的時間可能長於請求的時間也可能短於暫停的時間。
2. raw_input( )
通過等待輸入來讓程序暫停
3. os.system(“pause”)
通過執行操作系統的命令來讓程序暫停,該函數是通過實現標準C函數system( )來實現的。
Python2.4新加入了subprocess模塊,而且官方建議使用改模塊替換os.system所以,也可以這樣寫:
求噴!求補充!
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 暫停幾秒執行下一步、
在代碼開頭引入time模塊:import time
在需要延時的地方加入語句:time.sleep(1)
(括號中的1意為停頓1秒,想停頓時間更長可以換數字)
舉例:
import time
print ’11’
time.sleep(10)
print ’22’
先打印11,等待10秒後,打印22。
擴展資料:
文件執行
1、用 notepad++ 或 Sublime Text,甚至 寫字本創建一個文件。
2、比如:print(‘Hello world!’)
3、保存為 helloworld.py,一定要選或寫後綴名 .py 。
4、進入cmd命令行,切換(cd)到保存文件的目錄,執行 python helloworld.py,文件名前的python表示調用python解釋器執行文件。
原創文章,作者:T84L4,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129171.html