2010-11-15 4 views
12

मैं चाहता मिली सेकंड की संख्या प्राप्त करने के लिए।पायथन: कैसे प्रणाली के हर्ट्ज, अर्थात कितने मिली सेकंड अजगर कोड से एक पल है पता करने के लिए प्रति पल

+0

एक जिफ्फी क्या है? – knitti

+2

टाइमर इंटरप्ट अंतराल, जो सभी थ्रेड नींद संचालन की सटीकता निर्धारित करता है, आदि –

+0

@knitti, "मैं इसे आपके लिए एक जिफ्फ़ी में प्राप्त करूंगा"। मुझे लगता है कि यह "वास्तविक त्वरित" के बराबर है। – jlafay

उत्तर

22

है जो कर्नेल /proc में समय रिपोर्ट करने के लिए उपयोग करता USER_HZ

>>> import os 
>>> os.sysconf_names['SC_CLK_TCK'] 
2 
>>> os.sysconf(2) 
100 

नहीं है।

सॉफ्टवेयर घड़ी, हर्ट्ज, और jiffies

विभिन्न सिस्टम कॉल कि समय समाप्ति निर्धारित करते हैं, (जैसे, चयन (2), sigtimedwait की सटीकता:

time(7) मैनुअल पृष्ठ से

(2)) और उपाय CPU समय (जैसे, getrusage (2)) सॉफ्टवेयर घड़ी के संकल्प द्वारा सीमित है, एक घड़ी गिरी जो jiffies में समय उपायों द्वारा बनाए रखा। एक जिफ्फी का आकार कर्नेल स्थिर एचजेड के मान द्वारा निर्धारित है।

हर्ट्ज का मूल्य कर्नेल संस्करणों और हार्डवेयर प्लेटफार्मों पर बदलता रहता है। i386 पर स्थिति निम्नानुसार है: 2.4.x सहित कर्नेल पर, एचजेड 100 था, 0.01 सेकेंड का जिफ्फी वैल्यू दे रहा था; 2.6.0 से शुरू होने पर, एचजेड को 10001 सेकेंड का जफ़ी देकर 1000 तक बढ़ा दिया गया। गिरी 2.6.13 के बाद से, हर्ट्ज मूल्य कर्नेल विन्यास पैरामीटर है और 100, 250 (डिफ़ॉल्ट) या 1000, की, क्रमशः tively, 0.01, 0.004, या 0.001 सेकंड एक jiffies मूल्य उपज हो सकती है। कर्नेल 2.6.20 के बाद से, एक और आवृत्ति उपलब्ध है: 300, एक नंबर है कि कॉम मोन वीडियो फ्रेम दर (पाल, 25 हर्ट्ज; NTSC, 30 हर्ट्ज) के लिए समान रूप से विभाजित करता है।

बार (2) सिस्टम कॉल एक विशेष मामला है। यह कर्नेल निरंतर USER_HZ द्वारा परिभाषित ग्रैन्युलरिटी के साथ समय की रिपोर्ट करता है। उपयोगकर्ता स्पेस एप्लाका- टियां sysconf (_SC_CLK_TCK) का उपयोग करके इस निरंतरता का मान निर्धारित कर सकते हैं।

आप पूरी तरह पता होना चाहिए तो 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))) 

(जिसके बारे में सही लगता है) और एक वी एम में 1000000000 अपने लैपटॉप पर 250 देता है ...

+0

मैं jiffies के आधार पर कुछ सामान की गणना करने की कोशिश कर रहा हूं जो वास्तव में एमएस में होना चाहिए। तो, अगर एचजेड समकक्ष पता है, तो jiffies * 1000/os.sysconf (2) = एमएस। कम से कम मुझे तो यही लगता है। – Murgh

+0

आपकी जिफियां कहां से आती हैं? भी, आपका समीकरण अजीब है। – hop

+0

जिफियां/proc/stat और इसी तरह की फाइलों में पाए जाने वाले स्टेम, यूटिम और अन्य समय से संबंधित प्रोजेक्ट्स से आती हैं। समीकरण unixtop.org से आता है। elapsed = timediff.tv_sec * एचजेड + (timediff.tv_usec * एचजेड)/1000000; चूंकि पाइथन में एचजेड उपलब्ध नहीं है, इसलिए मैं विकल्प की तलाश में था। – Murgh

5

sysconf (SC_CLK_TCK) आवृत्ति नहीं देता लिनक्स में टाइमर इंटरप्ट्स का। यह jiffies की आवृत्ति देता है जो विभिन्न निर्देशिकाओं में काउंटर जैसे/proc

वास्तविक आवृत्ति जानबूझकर उपयोगकर्ता स्थान से छिपी हुई है। दरअसल, कुछ सिस्टम डायनामिक टिक या "टिकलेस" सिस्टम का उपयोग करते हैं, इसलिए वास्तव में कोई भी वास्तव में नहीं है।

सभी उपयोगकर्ता स्पेस इंटरफेस SC_CLK_TCK से मान का उपयोग करते हैं, जहां तक ​​मैं देख सकता हूं हमेशा लिनक्स के तहत 100 है।

https://github.com/peppelinux/xt_recent_parser

उत्पादन इस तरह है::

+0

नहीं, मुझे लगता है कि मान आर्किटेक्चर – hop

+0

पर निर्भर करता है हां, यह आर्किटेक्चर निर्भर है और हाल ही के कर्नेल में अधिकांश (लेकिन शायद सभी नहीं) आर्किटेक्चर में 100 पर हार्ड-कोड किया गया है। – MarkR

+0

ठीक है, उन्हें अपने रहस्य रखने दो। मैं बस जानना चाहता था, सीपीयू के समय प्राप्त करने के लिए मुझे '/ proc/stat' और '/ proc//stat' से मानों को गुणा करने की आवश्यकता है। मुझे लगता है कि 10 एमएस इसके लिए पर्याप्त परिशुद्धता है ... –

0

मैं यह लिखा

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 

मुझे लगता है कि अगर आप मिलीसेकंड रूपांतरण की जरूरत है संपादित करने के लिए आसान हो जाएगा, आप केवल JiffyTimeConverter का विस्तार करने के लिए है पायथन कक्षा

संबंधित मुद्दे