本文目录一览:
- 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解释器执行文件。