真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python讓函數(shù)暫停 python程序如何暫停

python程序如何讓其暫停

你是ython3還是Python2?它們運(yùn)行暫停的方法也有所不同,以python3為例:

創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站制作、網(wǎng)站建設(shè)與策劃設(shè)計(jì),陸港網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:陸港等地區(qū)。陸港做網(wǎng)站價(jià)格咨詢:18980820575

1、input();

這種方法不用包含模塊,因此這也是最常用的一種暫停手段。

Python2中的raw_input()和input()語句在Python3中已經(jīng)被合并到input()中。

2、os.system("pause");

這種方法需要包含os模塊(import os),在windows下IDLE運(yùn)行會(huì)彈出cmd命令行,

進(jìn)行暫停操作,直接運(yùn)行.py文件會(huì)直接在命令行中暫停。

3、time.sleep("second");

這種方法需要包含time模塊(import time),second是自定義的時(shí)間長(zhǎng)短,根據(jù)實(shí)際情況,

python怎么讓進(jìn)程暫停

您的意思是要將進(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)程

為了證明效果 我寫了一個(gè)簡(jiǎn)單的進(jìn)程Process

其下有兩個(gè)線程 讀者Reader 和 寫者Writer(簡(jiǎ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)父類

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

#不滿足條件的 進(jìn)入阻塞狀態(tài)

class Reader(threading.Thread): #讀者

def __init__(self):

threading.Thread.__init__(self) #繼承父類構(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 '開始讀 , 讀者編號(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): #寫者

def __init__(self):

threading.Thread.__init__(self)

def run(self):

global mutex

global writerCount

#print '線程PID: %s' %os.getpid()

while True:

print '寫者進(jìn)程等待中 編號(hào): %s' %(self.name)

mutex.acquire()

print '開始寫 編號(hào):%s 現(xiàn)在時(shí)間是: %s ' %(self.name,ctime())

sleep(5)

print '結(jié)束寫 編號(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

寫者進(jìn)程等待中 編號(hào): Thread-2

開始寫 編號(hào):Thread-2 現(xiàn)在時(shí)間是: Mon Nov 30 21:12:12 2015

讀者進(jìn)程等待中,編號(hào)Thread-1

寫者進(jìn)程等待中 編號(hào): Thread-4

進(jìn)程阻塞

寫者進(jìn)程等待中 編號(hào): Thread-6

寫者進(jìn)程等待中 編號(hào): Thread-8

寫者進(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é)束寫 編號(hào): Thread-2 現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015

寫者進(jìn)程等待中 編號(hào): Thread-2

開始讀 , 讀者編號(hào) Thread-1 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015

開始讀 , 讀者編號(hào) Thread-3 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015

開始讀 , 讀者編號(hào) Thread-5 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015

開始讀 , 讀者編號(hào) Thread-7 ,現(xiàn)在時(shí)間是 Mon Nov 30 21:12:20 2015

開始讀 , 讀者編號(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 在線程函數(shù)中如何實(shí)現(xiàn)線程的暫停、恢復(fù)和終止?

我們都知道python中可以是threading模塊實(shí)現(xiàn)多線程, 但是模塊并沒有提供暫停, 恢復(fù)和停止線程的方法, 一旦線程對(duì)象調(diào)用start方法后, 只能等到對(duì)應(yīng)的方法函數(shù)運(yùn)行完畢. 也就是說一旦start后, 線程就屬于失控狀態(tài). 不過, 我們可以自己實(shí)現(xiàn)這些. 一般的方法就是循環(huán)地判斷一個(gè)標(biāo)志位, 一旦標(biāo)志位到達(dá)到預(yù)定的值, 就退出循環(huán). 這樣就能做到退出線程了. 但暫停和恢復(fù)線程就有點(diǎn)難了, 我一直也不清除有什么好的方法


分享名稱:Python讓函數(shù)暫停 python程序如何暫停
瀏覽地址:http://weahome.cn/article/hjjchh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部