मैं time.clock
और time.time
का उपयोग कर Ubuntu पर अजगर कोड का एक वर्ग का समय समाप्त हो:समय के मुकाबले ज्यादा समय बीतने का समय क्यों है। समय?
clock elapsed time: 8.770 s
time elapsed time: 1.869 s
मैं समझता हूँ कि time.time प्रणाली समय का उपयोग करता है और time.clock प्रोसेसर घड़ी का उपयोग करता। यह मुझे समझ में आता है जब समय। समय समय के मुकाबले एक बड़ा समय बीतता है। घड़ी: प्रोसेसर पूरे समय सक्रिय नहीं था (उदाहरण के लिए time.sleep
पर कॉल करें)।
लेकिन क्यों प्रोसेसर घड़ी एक विलुप्त समय देगी, सिस्टम 0 की तुलना में अधिक है?
परिशिष्ट
मैं एक मोटा परीक्षण कंप्यूटिंग एक मानक नक्शे के साथ एक ही समारोह, एक प्रक्रिया पूल नक्शे के साथ, और एक थ्रेड पूल नक्शा किया था। समझा जा सकता है, प्रक्रिया पूल तेज है और धागा पूल धीमा है। अधिक दिलचस्प बात: घड़ी समय कम प्रोसेसर पूल के साथ समय के समय की तुलना में अधिक थ्रेड पूल में है।
फिर से, मैं समझता हूं कि प्रोसेसर पूल के साथ घड़ी का समय क्यों कम है: संभवतः मास्टर प्रक्रिया बहुत कुछ नहीं करती है और पूल प्रक्रियाओं को पूरा करने की प्रतीक्षा करती है। लेकिन थ्रेड पूल के साथ घड़ी का समय क्यों अधिक है? कोई अंतर्दृष्टि?
परिणाम:
map
time 1738.8
clock 1739.6
mp pool
time 580.1
clock 15.9
thread pool
time 3455.3
clock 5378.9
कोड:
from time import clock, sleep, time
from multiprocessing.pool import ThreadPool
from multiprocessing import Pool
import random
def f(i):
x = [random.random() for j in range(100000)]
return x[i]
def t(fn):
t0, c0 = time(), clock()
for i in range(10): fn(f,range(16))
print ' time ', round(1000*(time()-t0),1)
print ' clock', round(1000*(clock()-c0),1)
if __name__ == '__main__':
print 'map'
t(map)
pool = Pool(8)
print 'mp pool'
t(pool.map)
pool = ThreadPool(8)
print 'thread pool'
t(pool.map)
कुछ समांतर? क्या आप 8 कोर पर चल रहे हैं? – dmg
हां, यह मेरा संदेह भी है। तो क्या घड़ी सभी प्रोसेसर के लिए एक विलम्बित घड़ी का समय देती है? – jmilloy
ओएस-विशिष्ट हो सकता है, लेकिन मैंने कई समय के उपकरण/libs – dmg