चलाने के लिए प्रतीत होता है मैं एक पायथन परियोजना में धागे का उपयोग करने की कोशिश कर रहा हूं, लेकिन थ्रेड्स मेरे कोड में व्यवहार करने के रूप में व्यवहार नहीं कर रहे हैं। ऐसा लगता है कि सभी धागे अनुक्रमिक रूप से चलते हैं (यानी थ्रेड 2 थ्रेड 1 सिरों के बाद शुरू होता है, वे दोनों एक ही समय में शुरू नहीं होते हैं)। मैंने इसका परीक्षण करने के लिए एक सरल लिपि लिखी, और वह अनुक्रमिक रूप से धागे चलाता है।पायथन थ्रेडिंग अनुक्रमिक रूप से
import threading
def something():
for i in xrange(10):
print "Hello"
def my_thing():
for i in xrange(10):
print "world"
threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()
यहाँ उत्पादन मैं इसे चलने से प्राप्त होते हैं:
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world
समान व्यवहार छोरों की पुनरावृत्तियों की विशाल संख्या के मध्य मनाया जाता है।
मैंने वेब और पुराने एसओ उत्तरों की खोज करने की कोशिश की, लेकिन मुझे कुछ भी मदद नहीं मिली। क्या कोई यह बता सकता है कि इस कोड के साथ क्या गलत है?
10000 पुनरावृत्तियों के साथ वही व्यवहार अपडेट किया है – MAK
वास्तविक प्रोजेक्ट पर जिस पर मैं काम कर रहा हूं, थ्रेड्स में से एक एक अनंत लूप है जो संदेशों के लिए सुनता है और कॉलबैक फ़ंक्शन को कॉल करता है वे पहुंचें। यह सिर्फ सभी अन्य धागे को ब्लॉक करता है। दुर्भाग्य से, वास्तविक पाश कोड को संशोधित नहीं किया जा सकता है (मैं केवल धागे के भीतर कक्षा के रन() विधि को कॉल करता हूं)। – MAK
जब मैं इस तरह की स्क्रिप्ट चलाता हूं: './pythr.py | uniq -c' मुझे मिलता है: 8969 हैलो | 1 हैलो वर्ल्ड | 6626 विश्व | 1 | 3373 दुनिया | 1030 हैलो। तो यह नियंत्रण बदलता है - बस इतना नहीं ... – viraptor