在我的Python環(huán)境(Win7+Python2.7.9)下測(cè)試沒(méi)問(wèn)題,是等待5秒后再輸出 m。
創(chuàng)新互聯(lián)公司成立以來(lái)不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點(diǎn),以客戶(hù)需求中心、市場(chǎng)為導(dǎo)向”的快速反應(yīng)體系。對(duì)公司的主營(yíng)項(xiàng)目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計(jì)、行業(yè) / 企業(yè)門(mén)戶(hù)設(shè)計(jì)推廣、行業(yè)門(mén)戶(hù)平臺(tái)運(yùn)營(yíng)、App定制開(kāi)發(fā)、成都做手機(jī)網(wǎng)站、微信網(wǎng)站制作、軟件開(kāi)發(fā)、四川電信科技城機(jī)房等實(shí)行標(biāo)準(zhǔn)化操作,讓客戶(hù)可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。
你的問(wèn)題可能是被標(biāo)準(zhǔn)輸出流的緩沖區(qū)緩沖了,給 stdout 加一個(gè) flush 就可以了:
from?time?import?sleep
from?sys?import?stdout
print?"s"
stdout.flush()
sleep(5)
print?"m"
您的意思是要將進(jìn)程掛起(Suspend) 而非 阻塞(Block)
如果用sleep() 進(jìn)程將阻塞
假設(shè)進(jìn)程下有兩個(gè)線程 那么這兩個(gè)線程會(huì)繼續(xù)運(yùn)行
要使進(jìn)程掛起 可以考慮使用psutil
import psutil
p = psutil.Process(pid)
p.suspend() #掛起進(jìn)程
p.resume() #恢復(fù)進(jìn)程
為了證明效果 我寫(xiě)了一個(gè)簡(jiǎn)單的進(jìn)程Process
其下有兩個(gè)線程 讀者Reader 和 寫(xiě)者Writer(簡(jiǎn)單的讀者寫(xiě)者問(wèn)題)
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) #手動(dòng)實(shí)現(xiàn)父類(lèi)
pid = os.getpid()
def run(self):
print '當(dāng)前運(yùn)行進(jìn)程PID : %s ' %self.pid #子線程的id與父進(jìn)程的pid相同 屬于 同一個(gè)進(jìn)程
for i in range(0,5):
r = ThreadInReadAndWriteProblem.Reader()
w = ThreadInReadAndWriteProblem.Writer()
w.start()
r.start()
print '進(jìn)程阻塞'
sleep(10) #總共運(yùn)行時(shí)間10秒
ReaderWriter
import threading
from time import ctime, sleep
import os
mutex = threading.Lock() #互斥鎖
mutex_readercount = threading.Lock() #計(jì)數(shù)時(shí)的互斥 計(jì)算當(dāng)前正在讀的數(shù)目
readerCount = 0 number = 0
#不滿(mǎn)足條件的 進(jìn)入阻塞狀態(tài)
class Reader(threading.Thread): #讀者
def __init__(self):
threading.Thread.__init__(self) #繼承父類(lèi)構(gòu)造函數(shù)
def run(self):
global mutex
global readerCount
#print '線程PID: %s ' %os.getpid()
while True:
mutex_readercount.acquire()
readerCount +=1
if readerCount == 1:
print '讀者進(jìn)程等待中,編號(hào)%s' %(self.name)
mutex.acquire() == False # 第一個(gè)需要申請(qǐng)
mutex_readercount.release()
print '開(kāi)始讀 , 讀者編號(hào) %s ,現(xiàn)在時(shí)間是 %s' %(self.name,ctime())
sleep(2)
print '完成讀 , 讀者編號(hào) %s , 現(xiàn)在時(shí)間是 %s' %(self.name,ctime())
mutex_readercount.acquire()
readerCount -= 1
if readerCount == 0: #所有讀者均完成
print '最后一個(gè)讀者完成讀 '
mutex.release()
mutex_readercount.release()
class Writer(threading.Thread): #寫(xiě)者
def __init__(self):
threading.Thread.__init__(self)
def run(self):
global mutex
global writerCount
#print '線程PID: %s' %os.getpid()
while True:
print '寫(xiě)者進(jìn)程等待中 編號(hào): %s' %(self.name)
mutex.acquire()
print '開(kāi)始寫(xiě) 編號(hào):%s 現(xiàn)在時(shí)間是: %s ' %(self.name,ctime())
sleep(5)
print '結(jié)束寫(xiě) 編號(hào): %s 現(xiàn)在時(shí)間是 %s' %(self.name,ctime())
mutex.release()
測(cè)試程序
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 '進(jìn)程掛起 %s' %ctime()
sleep(5)
wake(p.pid)
print '喚醒進(jìn)程 %s' %ctime()
def stop(pid):
print '進(jìn)程暫停 進(jìn)程編號(hào) %s ' %(pid)
p = psutil.Process(pid)
p.suspend()
def wake(pid):
print '進(jìn)程恢復(fù) 進(jìn)程編號(hào) %s ' %(pid)
p = psutil.Process(pid)
p.resume()
if __name__ == '__main__':
main()
結(jié)果:
當(dāng)前運(yùn)行進(jìn)程PID : 3096
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-2
開(kāi)始寫(xiě) 編號(hào):Thread-2 現(xiàn)在時(shí)間是: Mon Nov 30 21:12:12 2015
讀者進(jìn)程等待中,編號(hào)Thread-1
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-4
進(jìn)程阻塞
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-6
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-8
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-10
進(jìn)程暫停 進(jìn)程編號(hào) 3096
進(jìn)程掛起 Mon Nov 30 21:12:15 2015
進(jìn)程恢復(fù) 進(jìn)程編號(hào) 3096
喚醒進(jìn)程 Mon Nov 30 21:12:20 2015
結(jié)束寫(xiě) 編號(hào): Thread-2 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
寫(xiě)者進(jìn)程等待中 編號(hào): Thread-2
開(kāi)始讀 , 讀者編號(hào) Thread-1 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
開(kāi)始讀 , 讀者編號(hào) Thread-3 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
開(kāi)始讀 , 讀者編號(hào) Thread-5 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
開(kāi)始讀 , 讀者編號(hào) Thread-7 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
開(kāi)始讀 , 讀者編號(hào) Thread-9 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015
完成讀 , 讀者編號(hào) Thread-1 , 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號(hào) Thread-3 , 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號(hào) Thread-5 , 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號(hào) Thread-7 , 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:22 2015
Python中的sleep函數(shù)可以傳小數(shù)進(jìn)去,然后就可以進(jìn)行毫秒級(jí)的延時(shí)了。
代碼如下:
import time
i = 1
while i = 3:
print(i) # 輸出i
i += 1
time.sleep(1) # 休眠1秒
例1:循環(huán)輸出休眠100毫秒
import time
i = 1
while i = 3:
print(i) # 輸出i
i += 1
time.sleep(0.1) # 休眠0.1秒
擴(kuò)展資料
python中 time.sleep()用法:
sleep() 方法暫停給定秒數(shù)后執(zhí)行程序。該參數(shù)可以是一個(gè)浮點(diǎn)數(shù)來(lái)表示一個(gè)更精確的睡眠時(shí)間。
實(shí)際中止時(shí)間可能不到所請(qǐng)求的,因?yàn)槿魏尾东@信號(hào)將終止 sleep()接下來(lái)執(zhí)行該信號(hào)捕捉的程序。
以下是sleep()方法的語(yǔ)法:
time.sleep(t)
參數(shù) t – 這是要暫停執(zhí)行的秒數(shù)。 返回值:此方法不返回任何值。
你可以使用m = raw_input()來(lái)實(shí)現(xiàn)暫停的效果。
如果解決了您的問(wèn)題請(qǐng)采納!
如果未解決請(qǐng)繼續(xù)追問(wèn)!
time.sleep在python3.11中替換為python。
INTRO:眾所周知,time.sleep的準(zhǔn)確率取決于操作系統(tǒng)和計(jì)算負(fù)載。 Windows 中的準(zhǔn)確性非常差。
類(lèi)似于 /questions/17499837一個(gè)方法可以使用 time.clock 實(shí)現(xiàn)忙等待方法作為 time.sleep 的替代方法.這種方法會(huì)造成不必要的負(fù)載,影響系統(tǒng)中的其他模 block 。這在進(jìn)行模擬時(shí)是不可取的。
減少花在忙等待上的時(shí)間,而不是依賴(lài) time.sleep , 一個(gè)類(lèi)使用方法 select.select并利用超時(shí)屬性。
網(wǎng)頁(yè)標(biāo)題:python中暫停函數(shù) python程序
本文路徑:http://vcdvsql.cn/article22/doodhcc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、服務(wù)器托管、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)