2014-05-08 6 views
10

पालन एक वर्ग पर विचार करें:अजगर मल्टीकोर प्रोग्रामिंग

class Foo: 
    def __init__(self, data): 
     self.data = data 

    def do_task(self): 
     #do something with data 

अपने आवेदन में मैं फू वर्ग के कई उदाहरण युक्त एक सूची है। उद्देश्य सभी फू ऑब्जेक्ट्स के लिए do_task निष्पादित करना है। एक पहले कार्यान्वयन बस है:

#execute tasks of all Foo Object instantiated 
for f_obj in my_foo_obj_list: 
    f_obj.do_task() 

मैं अपने मशीन के 4 सीपीयू के बीच for चक्र साझा करने मल्टी कोर वास्तुकला का लाभ लेने के लिए चाहते हैं।

ऐसा करने का सबसे अच्छा तरीका क्या है?

+1

आप मल्टीप्रोसेसिंग मॉड्यूल का उपयोग कर सकते हैं। https://docs.python.org/2/library/multiprocessing.html – NorthCat

+0

कोशिश करें [यहां] (http://stackoverflow.com/a/1182350/1982962) यह आपकी मदद करेगा –

उत्तर

4
इसके बजाय सभी बहु सूत्रण/मल्टीकोर मूल बातें के माध्यम से जा के

, मैं एक पोस्ट के संदर्भ के लिए रयान डब्ल्यू स्मिथ द्वारा चाहते हैं: Multi-Core and Distributed Programming in Python

उन्होंने विस्तार में जाना होगा कि कैसे आप कई कोर का उपयोग कर सकते हैं और उन अवधारणाओं का उपयोग करें। लेकिन अगर आप सामान्य मल्टीथ्रेडिंग अवधारणाओं से परिचित नहीं हैं तो कृपया उस सामान से सावधान रहें।

Functional Programming आपको प्रत्येक कोर के लिए एल्गोरिदम/फ़ंक्शन को कस्टमाइज़ करने की अनुमति देगा।

14

आप मल्टीप्रोसेसिंग मॉड्यूल में process pools का उपयोग कर सकते हैं।

def work(foo): 
    foo.do_task() 

from multiprocessing import Pool 

pool = Pool() 
pool.map(work, my_foo_obj_list) 
pool.close() 
pool.join() 
+0

+1 यह एक बहुत है लागू करने के लिए अच्छा और तेज़। –

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