python脚本设置超时机制系统时间的方法
2016-02-21 00:00
996 查看
本文为大家介绍了python脚本设置系统时间的方法,一共有两种,其一是调用socket直接发送udp包到国家授时中心,其二是调用ntplib包。我在本地电脑ping 国家授时中心地址cn.pool.ntp.org有时出现丢包,然而,二者都没有检查udp是否丢包的机制,方法一在udp丢包后一直处于阻塞状态无法退出,方法二虽然会提示超时,但是不再做其它尝试,比如重新发包,或者向同一个域名的不同IP地址发包。于是,尝试在方法一的代码基础上,增加了超时机制,并且尝试向同一个域名的不同IP地址发包。
具体修改后的完整代码如下:
以上就是本文的全部内容,希望对大家的学习有所帮助。
python中关于时间和日期函数的常用计算总结(time和datatime)
Python时间戳与时间字符串互相转换实例代码
python操作日期和时间的方法
python socket 超时设置 errno 10054
Python计算程序运行时间的方法
python中日期和时间格式化输出的方法小结
python使用datetime模块计算各种时间间隔的方法
10种检测Python程序运行时间、CPU和内存占用的方法
Python中实现对Timestamp和Datetime及UTC时间之间的转换
具体修改后的完整代码如下:
#-*- coding:utf-8 -*- import socket import struct import time import win32api import os import re def getTime(TimeServerAddresses): TIME_1970 = 2208988800L client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client.settimeout(3) data = '\x1b' + 47 * '\0' #TimeServer_ip=socket.gethostbyname('cn.pool.ntp.org') #TimeServer_ip='202.118.1.130' Port=123 for address in TimeServerAddresses: success=False count=0 while not success and count<3: print address,count try: client.sendto(data, (address, Port)) data, address = client.recvfrom(1024) success=True except socket.timeout: print 'Request timed out!' count=count+1 if success==True:a break data_result = struct.unpack('!12I', data)[10] data_result -= TIME_1970 return data_result def setSystemTime(now_time): tm_year, tm_mon, tm_mday, tm_hour, tm_min, tm_sec, tm_wday, tm_yday, tm_isdst = time.gmtime(now_time) win32api.SetSystemTime(tm_year, tm_mon, tm_wday, tm_mday, tm_hour, tm_min, tm_sec, 0) print "Set System OK!" def getServerIP(): res1=os.popen('nslookup cn.pool.ntp.org') result1=res1.read() addresses=result1.split('\n\n')[1].split('\n')[1][12:].split(',') return addresses #for address in addresses: # res=os.popen('ping -n 2 '+address) # result=res.read() # received_num=int(re.findall('Received = [0-9]',result)[0].split('=')[1]) # if received_num > 1: # break #TimeServer=address if __name__ == '__main__': addresses=getServerIP() now_time=getTime(addresses) setSystemTime(now_time) print "%d-%d-%d %d:%d:%d" % time.localtime(now_time)[:6]
以上就是本文的全部内容,希望对大家的学习有所帮助。
您可能感兴趣的文章:
Python 时间处理datetime实例python中关于时间和日期函数的常用计算总结(time和datatime)
Python时间戳与时间字符串互相转换实例代码
python操作日期和时间的方法
python socket 超时设置 errno 10054
Python计算程序运行时间的方法
python中日期和时间格式化输出的方法小结
python使用datetime模块计算各种时间间隔的方法
10种检测Python程序运行时间、CPU和内存占用的方法
Python中实现对Timestamp和Datetime及UTC时间之间的转换
相关文章推荐
- python脚本设置系统时间的两种方法
- python实现二叉树实现查找
- [Python入门]Chapter5 条件语句和递归
- 读书笔记 -《Python 黑帽子》 ( 五 )
- Python图像处理库PIL的Image模块介绍(五)
- [Python入门]Chapter4 接口设计
- Python图像处理库PIL的Image模块介绍(四)
- python传递中文参数编码问题
- [Python入门]Chapter3 函数
- 正则表达式入门
- python入门困难
- [Python入门]Chapter2 变量、表达式和语句
- 爬虫分页爬取糗事百科
- [Python]学习Celery
- NumPy学习
- 用python实现Huffman编码
- 在python中导入mysql模块的时候,命令python setup.py build报错EnvironmentError: mysql_config not found的解决方法
- python-字典学习笔记
- python-元组学习笔记
- 【Python环境】如何使用正确的姿势进行高效Python函数式编程?