2010-09-03 16 views
7

मैं कोड नीचे सरलीकृत कि, है, इस तरह दिखता है:क्या functools.partial multiprocessing.Pool.map के साथ काम नहीं करता है?

run = functools.partial(run, grep=options.grep, print_only=options.print_only, force=options.force) 

if not options.single and not options.print_only and options.n > 0: 
    pool = multiprocessing.Pool(options.n) 
    Map = pool.map 
else: Map = map 

for f in args: 
    with open(f) as fh: Map(run, fh) 

try: 
    pool.close() 
    pool.join() 
except NameError: pass 

कि इस

TypeError: type 'partial' takes at least one argument 

एक साथ मिश्रित के साथ की तरह ठीक काम करता है जब मैं एक प्रक्रिया मोड में चलाने के लिए, लेकिन त्रुटियों के साथ विफल रहता है मल्टीप्रोसेसिंग मॉड्यूल के माध्यम से लंबे कॉल ढेर। क्या चल रहा है?

मैं अजगर 2.6.1 का उपयोग कर रहा हूं।

उत्तर

4

Google मुझे बताता है कि यह bug in Python है; जाहिर तौर पर Py3k में तय किया गया। यह माना जाता है कि partial को लेने योग्य नहीं है।

workaround है।

+0

'वर्कअराउंड' लिंक मर चुका है! कृपया web.archive पर इंगित करने के लिए अद्यतन –

+0

अपडेट करें :) – katrielalex

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