बनाम तो मैं यह देखने के लिए बहु मॉड्यूल cpu बाध्य काम सूत्रण की तुलना में बड़े पैमाने हैं कुछ परीक्षण कोड खटखटाया।अजगर बहु खिड़कियों पर cpu बाध्य काम के लिए सूत्रण और linux
osx (dual core macbook pro) serialrun took 2026.995 ms parallelrun took 1288.723 ms threadedrun took 5314.822 ms
मैं तो चला गया और एक विंडोज़ मशीन पर यह कोशिश की और कुछ मिल गया:
linux (dual quad core xeon): serialrun took 1192.319 ms parallelrun took 346.727 ms threadedrun took 2108.172 ms
मेरे डुअल कोर मैकबुक प्रो समान व्यवहार दिखाता है: लिनक्स पर मैं प्रदर्शन वृद्धि है कि मैं उम्मीद थी मिल बहुत अलग परिणाम।
windows (i7 920): serialrun took 1043.000 ms parallelrun took 3237.000 ms threadedrun took 2343.000 ms
क्यों ओह क्यों, बहु दृष्टिकोण इतना खिड़कियों पर धीमी है?
यहाँ परीक्षण कोड है:
#!/usr/bin/env python import multiprocessing import threading import time def print_timing(func): def wrapper(*arg): t1 = time.time() res = func(*arg) t2 = time.time() print '%s took %0.3f ms' % (func.func_name, (t2-t1)*1000.0) return res return wrapper def counter(): for i in xrange(1000000): pass @print_timing def serialrun(x): for i in xrange(x): counter() @print_timing def parallelrun(x): proclist = [] for i in xrange(x): p = multiprocessing.Process(target=counter) proclist.append(p) p.start() for i in proclist: i.join() @print_timing def threadedrun(x): threadlist = [] for i in xrange(x): t = threading.Thread(target=counter) threadlist.append(t) t.start() for i in threadlist: i.join() def main(): serialrun(50) parallelrun(50) threadedrun(50) if __name__ == '__main__': main()
मैं एक क्वाड-कोर डेल PowerEdge 840 Win2k3 चलाने पर अपने परीक्षण कोड भाग गया है, और परिणाम तुम्हारा के रूप में के रूप में नाटकीय नहीं थे, लेकिन अपनी बात मान्य रहता है: serialrun ले लिया 1266.000 एमएस parallelrun 1906.000 एमएस threadedrun 4359.000 ले लिया ले लिया एमएस मुझे यह देखने में दिलचस्पी होगी कि आपको क्या जवाब मिलते हैं। मैं खुद को नहीं जानता। – Jeff