1.10. 时间值(Time Values)

1.10. 时间值(Time Values)
长期以来,UNIX系统一直使用两种不同的时间值:
(1)日历时间(calendar time)。该值是自1970年1月1日00:00:00以来国际标准时间(Coordinated Universal Time (UTC))所经过的秒数累计值(早期的手册称UTC为格林尼治标准时间)。这些时间值可用于记录文件最近一次的修改时间等。
(2)进程时间(Process time)。也被称为CPU时间(CPU time),用以度量一个进程使用的CUP资源。进程时间以时钟滴答(clock ticks)计算,多年来,每秒钟取为50、60或100个滴答。

基本系统数据类型(primitive system data type)clock_t保存这些时间值。(在section2.5.4,我们将说明如何用sysconf函数获得每秒时钟滴答数(number of clock ticks per second))

当我们度量一个进程的执行时间时,在section3.9,我们将看到UNIX系统为一个进程保存三个时间值:
• 时钟时间(clock time)
• 用户CPU时间(user CPU time)
• 系统CPU时间(System CPU time)


时钟时间又称为墙上时钟时间(wall clock time)。它是进程运行的时间总量,其值与系统中同时运行的其它进程数有关。无论何时我们报告时钟时间,都是系统中没有其他活动时的度量。(Whenever we report the clock time, the measurements are made with no other activities on the system.)

用户CPU时间是执行用户指令(user instructions)所用的CPU时间量。

系统CPU时间是CPU time attributed to the kernel when it executes on behalf of the process。例如,无论何时一个进程执行一个系统服务,例如read或write,则在kernel内执行该服务所花费的时间就计入该进程的系统CPU时间。

用户CPU时间和系统CPU时间的和常被称为CPU时间。


要度量任一进程的时钟时间、用户时间和系统时间很容易:只要执行命令命令time(1),其参数是要度量其执行时间的命令,例如:
$ cd /usr/include
$ time -p grep _POSIX_SOURCE */*.h > /dev/null

real    0m0.81s
user    0m0.11s
sys     0m0.07s
time命令的输出格式与所使用的shell有关,因为一些shell不运行/usr/bin/time,but instead have a separate built-in function to measure the time it takes commands to run。
在section8.16,我们将看到一个正在运行的进程如何或得这三个时间。关于时间和日期的一般说明section6.10。


好的,我可以帮你编写这个程序。首先,需要安装 snap7 和 PyMySQL 两个库,可以使用以下命令进行安装: ``` pip install snap7 pip install PyMySQL ``` 然后,可以使用以下代码实现你的需求: ```python import threading import time import snap7 import pymysql # 定义连接信息 plc_ip = '192.168.1.10' plc_rack = 0 plc_slot = 2 plc_db = 1 plc_var = 'MW20' mysql_host = 'localhost' mysql_port = 3306 mysql_user = 'root' mysql_password = 'password' mysql_db = 'test_01' # 连接PLC plc = snap7.client.Client() plc.connect(plc_ip, plc_rack, plc_slot) # 连接MySQL mysql_conn = pymysql.connect(host=mysql_host, port=mysql_port, user=mysql_user, password=mysql_password, db=mysql_db) # 定义获取数据的函数 def get_data(): while True: # 获取当前时间 current_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 获取MW20的数据 data = plc.db_read(plc_db, int(plc_var[2:]), 2) value = snap7.util.get_real(data, 0) # 将数据和时间插入到MySQL with mysql_conn.cursor() as cursor: sql = 'INSERT INTO aa (time, value) VALUES (%s, %s)' cursor.execute(sql, (current_time, value)) mysql_conn.commit() # 等待5秒 time.sleep(5) # 创建线程并启动 thread = threading.Thread(target=get_data) thread.setDaemon(True) thread.start() ``` 在以上代码中,我们定义了连接PLC和MySQL所需的信息,然后使用 snap7 和 PyMySQL 库连接到相应的设备。接着,我们定义了一个 `get_data` 函数,该函数会不断地获取 MW20 的数据和当前时间,并将其插入到 MySQL 中。最后,我们创建了一个线程并启动它,该线程会在后台执行 `get_data` 函数,不会影响其他模块的执行。 需要注意的是,以上代码仅供参考,具体的连接信息和插入语句需要根据实际情况进行修改。另外,由于涉及到多个设备和线程,建议在实际使用时进行充分的测试和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值