मैं आंशिक फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं ताकि पूल.मैप() एक ऐसे फ़ंक्शन को लक्षित कर सके जिसमें एक से अधिक पैरामीटर हो (इस मामले में लॉक() ऑब्जेक्ट)।पाइथन प्रक्रियाओं के बीच लॉक साझा करना
Runtime Error: Lock objects should only be shared between processes through inheritance.
मैं क्या कर रहा हूँ:
from functools import partial
def target(lock, iterable_item):
for item in items:
# Do cool stuff
if (... some condition here ...):
lock.acquire()
# Write to stdout or logfile, etc.
lock.release()
def main():
iterable = [1, 2, 3, 4, 5]
pool = multiprocessing.Pool()
l = multiprocessing.Lock()
func = partial(target, l)
pool.map(func, iterable)
pool.close()
pool.join()
लेकिन जब मैं इस कोड चलाने के लिए, मैं त्रुटि मिलती है:
यहां उदाहरण के कोड (एक जवाब से मेरा एक पिछले प्रश्न करने के लिए लिया है) यहाँ याद आ रही है? मैं अपने सबप्रोसेसेस के बीच लॉक कैसे साझा कर सकता हूं?
इस समस्या के बारे में एक और सवाल है, हालांकि उनकी विशेष त्रुटि अलग है - [मल्टीप्रोसेसिंग के साथ लॉक का उपयोग करने में समस्या। पुल: पिकलिंग त्रुटि] (http://stackoverflow.com/questions/17960296/trouble-using-a- लॉक-साथ-मल्टीप्रोसेसिंग-पूल-पिकलिंग-त्रुटि) –