暫停python(暫停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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
T84L4的頭像T84L4
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論