Tôi muốn biết HZ của hệ thống, nghĩa là số giây mili giây là một giây từ mã Python.Python: Cách nhận số giây mili giây cho mỗi jiffy
Trả lời
Có USER_HZ
>>> import os
>>> os.sysconf_names['SC_CLK_TCK']
2
>>> os.sysconf(2)
100
đó là những gì hạt nhân sử dụng để báo cáo thời gian trong /proc
.
Từ time(7)
trang hướng dẫn:
The Clock phần mềm, HZ, và jiffies
Độ chính xác của các cuộc gọi hệ thống khác nhau mà thiết lập timeout, (ví dụ: chọn (2), sigtimedwait (2)) và đo thời gian CPU (ví dụ, getrusage (2)) bị giới hạn bởi độ phân giải của đồng hồ phần mềm, đồng hồ được duy trì bởi hạt nhân đo thời gian trong nháy mắt. Kích thước của một jiffy là được xác định bởi giá trị của hằng số hạt nhân HZ.
Giá trị của HZ thay đổi trên các phiên bản hạt nhân và nền tảng phần cứng. Trên i386 tình hình như sau: trên hạt nhân lên đến và bao gồm 2.4.x, HZ là 100, cho một giá trị jiffy là 0,01 giây; bắt đầu với 2.6.0, HZ được nâng lên 1000, cho ra một khoảng 0,00 giây. Kể từ hạt nhân 2.6.13, giá trị HZ là thông số cấu hình hạt nhân và có thể là 100, 250 (mặc định) hoặc 1000, cho giá trị jiffies, respec‐ tively, 0,01, 0,004 hoặc 0,001 giây. Kể từ hạt nhân 2.6.20, thêm tần số có sẵn: 300, một số chia đều cho tỷ lệ khung hình video com‐ mon (PAL, 25 HZ; NTSC, 30 HZ).
Thời gian (2) cuộc gọi hệ thống là trường hợp đặc biệt. Nó báo cáo thời gian với độ chi tiết được xác định bởi hằng số hạt nhân USER_HZ. Userspace applica‐ tions có thể xác định giá trị của hằng số này bằng cách sử dụng sysconf (_SC_CLK_TCK).
Nếu bắt buộc phải biết SYSTEM_HZ:
>>> from ctypes import *
>>> rt = CDLL('librt.so')
>>> CLOCK_REALTIME = 0
>>> class timespec(Structure):
... _fields_ = [("tv_sec", c_long), ("tv_nsec", c_long)]
...
>>> res = timespec()
>>> rt.clock_getres(CLOCK_REALTIME, byref(res))
0
>>> res.tv_sec, res.tv_nsec
(0, 4000250)
>>> SYSTEM_HZ = round(1/(res.tv_sec + (res.tv_nsec/10.0**9)))
Cung cấp 250 trên máy tính xách tay của tôi (mà âm thanh về bên phải) và 1000000000 trong một VM ...
Tôi đang cố gắng tính toán một số nội dung dựa trên jiffies mà thực sự nên ở dạng ms. Vì vậy, nếu biết HZ tương đương, sau đó jiffies * 1000/os.sysconf (2) = ms. IT nhât thi tôi nghi vậy. – Murgh
jiffies của bạn đến từ đâu? Ngoài ra, phương trình của bạn là lạ. – hop
jiffies đến từ stime, utime và proeprties thời gian liên quan khác được tìm thấy trong/proc/stat và các tập tin tương tự. Phương trình đến từ unixtop.org. elapsed = timediff.tv_sec * HZ + (timediff.tv_usec * HZ)/1000000; Vì HZ không có sẵn trong Python, tôi đang tìm kiếm giải pháp thay thế. – Murgh
sysconf (SC_CLK_TCK) không cung cấp cho các tần số của bộ đếm thời gian ngắt trong Linux. Nó cung cấp tần suất của các cảnh báo hiển thị cho không gian người dùng trong những thứ như các quầy trong nhiều thư mục khác nhau trong/proc
Tần số thực tế được ẩn khỏi không gian người dùng, cố ý. Thật vậy, một số hệ thống sử dụng các dấu tích động hoặc các hệ thống "tickless", vì vậy thực sự không có bất kỳ hệ thống nào.
Tất cả giao diện không gian người dùng sử dụng giá trị từ SC_CLK_TCK, theo như tôi thấy luôn luôn là 100 dưới Linux.
không, tôi nghĩ giá trị phụ thuộc vào kiến trúc – hop
Vâng, nó phụ thuộc vào kiến trúc và được mã hóa cứng ở mức 100 trong hầu hết các kiến trúc (nhưng có lẽ không phải tất cả) trong các nhân gần đây. – MarkR
OK, hãy để họ giữ bí mật của họ. Tôi chỉ muốn biết, bởi những gì tôi cần để nhân các giá trị từ '/ proc/stat' và'/proc/
tôi đã viết này:
https://github.com/peppelinux/xt_recent_parser
đầu ra là như thế này:
python3 xt_recent_parser.py
XT_RECENT python parser
<[email protected]>
114.241.108.160, last seen: 2017-03-25 18:21:42 after 13 Connections
46.165.210.17, last seen: 2017-03-25 13:07:54 after 10 Connections
61.53.219.162, last seen: 2017-03-25 17:39:17 after 20 Connections
179.37.141.232, last seen: 2017-03-25 18:08:23 after 2 Connections
114.42.117.39, last seen: 2017-03-25 13:22:14 after 18 Connections
177.12.84.234, last seen: 2017-03-25 16:22:14 after 17 Connections
Tôi nghĩ rằng nó sẽ được dễ dàng để chỉnh sửa nếu bạn cần chuyển đổi một phần nghìn giây, bạn chỉ cần mở rộng JiffyTimeConverter python class
- 1. Cách chuyển đổi mili giây thành giây.
- 2. MySQL 5.6 DATETIME không chấp nhận mili giây/micro giây
- 3. timestamp Nhận bao gồm mili giây
- 4. Hiển thị dateiff là giây, mili giây
- 5. Mili giây cho dấu thời gian UNIX
- 6. Lịch Java nhận ngày hiện tại, không có giờ, phút, giây và mili giây, tính bằng mili giây
- 7. Trả về mili giây đại diện cho datetime trong python
- 8. Nhận số giây từ
- 9. Java Mili giây trong năm
- 10. Tính mili giây từ epoch
- 11. Cách nhận chênh lệch thời gian bằng mili giây
- 12. Cách nhận thời gian bằng mili giây trong Android Shell?
- 13. CURRENT_TIMESTAMP tính bằng mili giây
- 14. Java Ngày đến mili giây
- 15. NSTimer Giảm thời gian bằng giây/mili giây
- 16. XMLTimeToDateTime bỏ qua mili giây
- 17. Cách lấy mili giây từ java.sql.Timestamp
- 18. Nhận dữ liệu âm thanh mỗi 20 mili giây trong ALSA?
- 19. So sánh các ngày bỏ qua giây và mili giây giây của DateTime trong Joda
- 20. Hiển thị mili giây trong Excel
- 21. C# sub mili giây thời gian
- 22. HTTP If-Modified-Since với mili giây
- 23. C++ chrono duration_cast đến mili giây cho kết quả tính bằng giây
- 24. Chạy lệnh mỗi giây
- 25. Chuyển đổi ngày thành mili giây
- 26. JodaTime Lấy Số Mili giây Hiện tại Từ Đầu Ngày
- 27. Tạo 3 chữ số Mili giây với php
- 28. C# Giấc ngủ trong 500 mili giây
- 29. hiển thị mili giây trong matplotlib
- 30. Chụp một thời gian trong mili giây
điểm yếu là gì? – knitti
khoảng thời gian gián đoạn bộ đếm thời gian, xác định độ chính xác của tất cả các hoạt động của luồng ngủ, v.v. –
@knitti, "Tôi sẽ nhận được điều đó cho bạn một cách nhanh chóng". Tôi nghĩ nó tương đương với "thật nhanh". – jlafay