python time.sleeppython 随机数组

在写python代码时,有关time.sleep产生的疑问。_百度知道
在写python代码时,有关time.sleep产生的疑问。
import timeprint &a&time.sleep(1)这样的三句代码中,time.sleep(1)是指执行完print &a&后,再休眠1ms,还是指print &a&这句指令只能在1ms内执行完,当执行print &a&这句指令所需的时间大过1ms时,可能会影响它的执行?
提问者采纳
可以通过调用time.sleep来挂起当前的进程。time.sleep接收一个浮点型参数,表示进程挂起的时间。当程序执行到
time.sleep(x) 时 , 程序将在这时挂起,等待x秒后继续执行
提问者评价
其他类似问题
为您推荐:
python的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Python模块学习:time 日期时间处理 - Python - 伯乐在线
& Python模块学习:time 日期时间处理
在应用程序的开发过程中,难免要跟日期、时间处理打交道。如:记录一个复杂算法的执行时间;网络通信中数据包的延迟等等。Python中提供了time, datetime calendar等模块来处理时间日期,今天对time模块中最常用的几个函数作一个介绍。
time.time()函数返回从日以来的秒数,这是一个浮点数。
time.sleep
可以通过调用time.sleep来挂起当前的进程。time.sleep接收一个浮点型参数,表示进程挂起的时间。
time.clock
在windows操作系统上,time.clock() 返回第一次调用该方法到现在的秒数,其精确度高于1微秒。可以使用该函数来记录程序执行的时间。下面是一个简单的例子:
import time
print time.clock() #1
time.sleep(2)
print time.clock() #2
time.sleep(3)
print time.clock() #3
#---- result
123456789101112
import time&print time.clock() #1time.sleep(2)print time.clock() #2time.sleep(3)print time.clock() #3&#---- result#3.e-06#1.#4.
time.gmtime
该函数原型为:time.gmtime([sec]),可选的参数sec表示从以来的秒数。其默认值为time.time(),函数返回time.struct_time类型的对象。(struct_time是在time模块中定义的表示时间的对象),下面是一个简单的例子:
import time
print time.gmtime()
#获取当前时间的struct_time对象
print time.gmtime(time.time() - 24 * 60 * 60)
#获取昨天这个时间的struct_time对象
#---- result
#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=16, tm_sec=3, tm_wday=1, tm_yday=174, tm_isdst=0)
#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=22, tm_hour=15, tm_min=16, tm_sec=3, tm_wday=0, tm_yday=173, tm_isdst=0)
import time&print time.gmtime()&&#获取当前时间的struct_time对象print time.gmtime(time.time() - 24 * 60 * 60)&&#获取昨天这个时间的struct_time对象&#---- result#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=16, tm_sec=3, tm_wday=1, tm_yday=174, tm_isdst=0)#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=22, tm_hour=15, tm_min=16, tm_sec=3, tm_wday=0, tm_yday=173, tm_isdst=0)
time.localtime
time.localtime与time.gmtime非常类似,也返回一个struct_time对象,可以把它看作是gmtime()的本地化版本。
time.mktime
time.mktime执行与gmtime(), localtime()相反的操作,它接收struct_time对象作为参数,返回用秒数来表示时间的浮点数。例如:
import time
#下面两个函数返回相同(或相近)的结果
print time.mktime(time.localtime())
print time.time()
<div class="crayon-num" data-line="crayon-561d3a<div class="crayon-num crayon-striped-num" data-line="crayon-561d3a<div class="crayon-num" data-line="crayon-561d3a<div class="crayon-num crayon-striped-num" data-line="crayon-561d3a<div class="crayon-num" data-line="crayon-561d3a
import time&#下面两个函数返回相同(或相近)的结果print time.mktime(time.localtime())print time.time()
time.strftime
time.strftime将日期转换为字符串表示,它的函数原型为:time.strftime(format[, t])。参数format是格式字符串(格式字符串的知识可以参考:),可选的参数t是一个struct_time对象。下面的例子将struct_time对象转换为字符串表示:
import time
print time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())
print time.strftime('Weekday: %w; Day of the yesr: %j')
#---- result
# 15:30:53
#Weekday: 2; Day of the yesr: 174
import time&print time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())print time.strftime('Weekday: %w; Day of the yesr: %j')&#---- result# 15:30:53#Weekday: 2; Day of the yesr: 174
time.strptime
按指定格式解析一个表示时间的字符串,返回struct_time对象。该函数原型为:time.strptime(string, format),两个参数都是字符串,下面是一个简单的例子,演示将一个字符串解析为一个struct_time对象:
import time
print time.strptime(' 15:30:53', '%Y-%m-%d %H:%M:%S')
#---- result
#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=30, tm_sec=53, tm_wday=1, tm_yday=174, tm_isdst=-1)
<div class="crayon-num" data-line="crayon-561d3a<div class="crayon-num crayon-striped-num" data-line="crayon-561d3a<div class="crayon-num" data-line="crayon-561d3a<div class="crayon-num crayon-striped-num" data-line="crayon-561d3a<div class="crayon-num" data-line="crayon-561d3a<div class="crayon-num crayon-striped-num" data-line="crayon-561d3a
import time&print time.strptime(' 15:30:53', '%Y-%m-%d %H:%M:%S')&#---- result#time.struct_time(tm_year=2009, tm_mon=6, tm_mday=23, tm_hour=15, tm_min=30, tm_sec=53, tm_wday=1, tm_yday=174, tm_isdst=-1)
以上介绍的方法是time模块中最常用的几个方法,在Python手册中还介绍了其他的方法和属性,如:time.timezone, time.tzname &#8230;感兴趣的朋友可以参考Python手册
可能感兴趣的话题
关于 Python 频道
Python频道分享 Python 开发技术、相关的行业动态。
新浪微博:
微信号:PythonCoder
(加好友请注明来意)
&#8211; 好的话题、有启发的回复、值得信赖的圈子
&#8211; 分享和发现有价值的内容与观点
&#8211; 为IT单身男女服务的征婚传播平台
&#8211; 优秀的工具资源导航
&#8211; 翻译传播优秀的外文文章
&#8211; 国内外的精选博客文章
&#8211; 专注iOS技术分享
&#8211; 专注Android技术分享
&#8211; JavaScript, HTML5, CSS
&#8211; 专注Java技术分享
&#8211; 专注Python技术分享
& 2015 伯乐在线
赞助云主机Slaytanic 的BLOG
用户名:Slaytanic
文章数:123
评论数:722
访问量:1003708
注册日期:
阅读量:15316
阅读量:210
51CTO推荐博文
最近参与公司一个项目,计划对在线平台的大规模查询做到快速响应,预估数据总量大概在2-3亿条,数据库并发量大概每秒1500,一年后并发大概3000每秒,经过在Redis和mongodb之间艰难的选择之后,决定使用mongodb,主要看中其平行扩展能力和GridFS上的Map/Reduce。预估项目完成上线后,高峰时段每秒并发查询在之间。其实我个人是比较喜欢Redis的,其并发查询能力和超越memcached的速度都很令人心动,不过其持久化和集群扩展性不太适合业务需要,所以最后还是选择了mongodb。下面是对mongodb测试的代码和结果。虽然公司用的一水的CentOS,但是由于我是FreeBSD的支持者,所以在FreeBSD和CentOS上都测试了一下结果。写库程序是网上抄来的,查询程序是自己写的。写库程序#!/usr/bin/env pythonfrom pymongo import Connectionimport time,datetimeconnection = Connection('127.0.0.1', 27017)db = connection['hawaii']#时间记录器def func_time(func):&&&&&&&&def _wrapper(*args,**kwargs):&&&&&&&&&&&&&&&&start = time.time()&&&&&&&&&&&&&&&&func(*args,**kwargs)&&&&&&&&&&&&&&&&print func.__name__,'run:',time.time()-start&&&&&&&&return _wrapper@func_timedef insert(num):&&&&&&&&posts = db.userinfo&&&&&&&&for x in range(num):&&&&&&&&&&&&&&&&post = {"_id" : str(x),&&&&&&&&&&&&&&&&&&&&&&&&"author": str(x)+"Mike",&&&&&&&&&&&&&&&&&&&&&&&&"text": "My first blog post!",&&&&&&&&&&&&&&&&&&&&&&&&"tags": ["mongodb", "python", "pymongo"],&&&&&&&&&&&&&&&&&&&&&&&&"date": datetime.datetime.utcnow()}&&&&&&&&&&&&&&&&posts.insert(post)if __name__ == "__main__": #设定循环500万次& & & & & &num = 5000000& & & & & &insert(num)查询程序#!/usr/bin/env pythonfrom pymongo import Connectionimport time,datetimeimport randomconnection = Connection('127.0.0.1', 27017)db = connection['hawaii']def func_time(func):&&&&&&&&&&&&&&&&def _wrapper(*args,**kwargs):&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&start = time.time()&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&func(*args,**kwargs)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&print func.__name__,'run:',time.time()-start&&&&&&&&&&&&&&&&return _wrapper#@func_timedef randy():&&&&&&&&&&&&&&&&rand = random.randint(1,5000000)&&&&&&&&&&&&&&&&return rand@func_timedef mread(num):&&&&&&&&&&&&&&&&find = db.userinfo&&&&&&&&&&&&&&&&for i in range(num):&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&rand = randy()
#随机数查询&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&find.find({"author": str(rand)+"Mike"})if __name__ == "__main__":
#设定循环100万次&&&&&&&&&&&&&&&&num = 1000000& & & & & & & & mread(num)删除程序#!/usr/bin/env pythonfrom pymongo import Connectionimport time,datetimeconnection = Connection('127.0.0.1', 27017)db = connection['hawaii']def func_time(func):&&&&&&&&def _wrapper(*args,**kwargs):&&&&&&&&&&&&&&&&start = time.time()&&&&&&&&&&&&&&&&func(*args,**kwargs)&&&&&&&&&&&&&&&&print func.__name__,'run:',time.time()-start&&&&&&&&return _wrapper@func_timedef remove():&&&&&&&&posts = db.userinfo&&&&&&&&print 'count before remove:',posts.count();&&&&&&&&posts.remove({});&&&&&&&&print 'count after remove:',posts.count();if __name__ == "__main__":&&&&&&&&remove()结果集
插入500万随机数查询100万删除500万CPU占用
CentOS394s28s224s25-30%
FreeBSD431s18s278s20-22%
CentOS插入和删除胜出;FreeBSD发挥了UFS2的优势,读取胜出。由于是作为查询服务器使用,所以读取速度快是个优势,不过我不是领导,我说了不算,最终还是得CentOS。在测试中,一直使用mongostat监控,从并发数量上,两个系统差不多。还测试了插入并发查询,不过结果差不多,大概并发的相加和都是每秒。性能还是很不错的。不过确实大数据量下插入性能下降比较严重,CentOS测试了5000万数据插入,耗时接近2小时。大概是6300多秒。比起500万数据插入速度,差不多慢了50%。不过查询速度还算差不多。测试结果供需要者做个参考。不过,这个测试不是太公平。FreeBSD配置要差一点。CentOS 16G内存,Xeon5606 两颗8核。Dell品牌机。FreeBSD 8G内存,Xeon5506 一颗4核。攒的没牌子1U。如果相同环境下,我觉得还是FreeBSD性能会比较好一点。本文出自 “” 博客,转载请与作者联系!
了这篇文章
类别:┆阅读(0)┆评论(0)当前位置:&>&&>&
python如何监控程序日志变化
发布时间:编辑:
一段python代码,动态监控程序日志文件变化,当日志文件不断的追加新的日志内容,动态监控指监控日志新追加的日志内容,一起学习下。
在python编程中,不用pyinotify模块,而是用subprocess、os模块等监控的变化。
日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件。
监控test1.log 10秒,转向监控test2.log。
程序监控使用tail -f来动态监控新追加的日志。
复制代码 代码示例:
#!/usr/bin/
# encoding=utf-8
# Filename: monitorLog.py
import signal
import subprocess
import time
logFile1 = &test1.log&
logFile2 = 'test2.log'
#日志文件一般是按天产生,则通过在程序中判断文件的产生日期与当前时间,更换监控的日志文件
#程序只是简单的示例一下,监控test1.log 10秒,转向监控test2.log
def monitorLog(logFile):
print '监控的日志文件 是%s' % logFile
# 程序运行10秒,监控另一个日志
stoptime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() + 10))
popen = subprocess.Popen('tail -f ' + logFile, stdout=subprocess.PIPE, stderr=subprocess.PIPE, =True)
pid = popen.pid
print('Popen.pid:' + str(pid))
while True:
line = popen.stdout.readline().strip()
# 判断内容是否为空
print(line)
# 当前时间
thistime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
if thistime &= stoptime:
# 终止子进程
popen.kill()
print '杀死subprocess'
time.sleep(2)
monitorLog(logFile2)
if __name__ == '__main__':
monitorLog(logFile1)
与 python如何监控程序日志变化 有关的文章
本文标题:
本页链接:
12345678910
12345678910当前访客身份:游客 [
当前位置:
自己写的这段代码,用于产生K个不相等的1到n的随机数。觉得还是有点复杂,大家有更简洁些的吗? PS:只允许使用python语言。
import random
def randDiff( k,n ):
'产生k个不相等的从1到n的随机数'
y1 = [random.randrange(1,n+1) for i in range(n)]
y2.extend(y1)
for j in range(k):
temp1 = y1[j]
temp2 = y2.index(temp1)
p.append(temp2 + 1)
y2[temp2] = -1
共有3个答案
怎么不能修改了?给个带测试的
#! /usr/bin/env python
# -*- coding: cp936 -*-
import random
from mytictoc import tic, toc
def randDiff( k,n ):
'产生k个不相等的从1到n的随机数'
y1 = [random.randrange(1,n+1) for i in range(n)]
y2.extend(y1)
for j in range(k):
temp1 = y1[j]
temp2 = y2.index(temp1)
p.append(temp2 + 1)
y2[temp2] = -1
def randDif(k,n):
'新函数,生成k个1到n之间不相等的随机数'
a = range(1,n+1)
random.shuffle(a)
return a[:k]
if __name__=='__main__':
for i in xrange(10):
print i,'====================='
print &Old function: &, randDiff(3,10)
print &New function: &, randDif(3,10)
toc()测试结果:
0 =====================
Old function:
[1, 7, 10]
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
1 =====================
Old function:
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
2 =====================
Old function:
[7, 10, 1]
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
3 =====================
Old function:
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
4 =====================
Old function:
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
5 =====================
Old function:
[2, 10, 1]
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
6 =====================
Old function:
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
7 =====================
Old function:
[6, 10, 3]
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
8 =====================
Old function:
Elapsed time: 0. seconds
New function:
[5, 1, 10]
Elapsed time: 0. seconds
9 =====================
Old function:
Elapsed time: 0. seconds
New function:
Elapsed time: 0. seconds
--- 共有 4 条评论 ---
: 不好意思,是我测试方法写错了...
(2年前)&nbsp&
: 不对啊,我的测试结果显示,两种方法差不多,而且时间大概是你的五十倍
(2年前)&nbsp&
: 那是我自己写的计时函数,用matlab用习惯了
(4年前)&nbsp&
谢谢指教,学习了~请问mytictoc这个模块是需要下载安装的吗,我用的python2.7里面没有。在哪里下载呢?
(4年前)&nbsp&
==&n肯定大于等于k
直接生成后shuffle输出前k个就可以了
import random
def randDif(k,n):
a = range(1,n+1)
random.shuffle(a)
return a[:k]
--- 共有 1 条评论 ---
一看到问题 大脑中就是这种想法 不错不错
(4年前)&nbsp&
你这个是产生k个不相等的从1到k的随机数吧
这个应该可以:
def randDiff(k,n,remain_arr = None):
if k == 0:
if remain_arr == None:
remain_arr = remain_arr and range(n)
v = [(random.choice(remain_arr) + 1)]
remain_arr.remove(v[0] - 1)
v.extend(randDiff(k-1,n,remain_arr))
更多开发者职位上
有什么技术问题吗?
Linius...的其他问题
类似的话题

我要回帖

更多关于 python 随机数组 的文章

 

随机推荐