मैं कुछ कम्प्यूटेशनल-गहन पायथन कोड लिखने वाला हूं जो लगभग numpy
के रैखिक बीजगणित कार्यों के भीतर अपना अधिकांश समय व्यतीत करेगा।numpy और ग्लोबल इंटरप्रेटर लॉक
हाथ में समस्या embarrassingly parallel है। लंबी कहानी छोटी, इसका लाभ लेने का सबसे आसान तरीका कई धागे का उपयोग करके होगा। मुख्य बाधा लगभग निश्चित रूप से ग्लोबल इंटरप्रेटर लॉक (जीआईएल) होने जा रही है।
इसे डिज़ाइन करने में सहायता के लिए, यह एक मानसिक मॉडल होना उपयोगी होगा जिसके लिए numpy
संचालन से उनकी अवधि के लिए जीआईएल जारी करने की उम्मीद की जा सकती है। इस अंत में, मैं अंगूठे, डॉस और don'ts, पॉइंटर्स इत्यादि के किसी भी नियम की सराहना करता हूं
यदि यह मायने रखता है, तो मैं लिनक्स पर 64-बिट पायथन 2.7.1 का उपयोग कर रहा हूं, numpy
1.5.1 के साथ और scipy
0.9.0rc2, इंटेल एमकेएल 10.3.1 के साथ बनाया गया।
क्या आपने थ्रेड के बजाय ['multiprocessing'] (http://docs.python.org/library/multiprocessing.html) lib का उपयोग करने पर विचार किया है? आपको अब जीआईएल के बारे में परेशान नहीं होना पड़ेगा। – Jeannot
@ जेनोटॉट: मेरे पास है, धन्यवाद। समस्या की प्रकृति के कारण, थ्रेडिंग मेरी पहली पसंद है। अगर मैं इसे काम नहीं कर सकता, तो मैं विकल्पों को देखूंगा। – NPE