यहां कुछ कोड है जो मेरी समस्या का वर्णन करता है:पायथन - मैं इस कोड को एसिंक्रोनस कैसे बना सकता हूं?
def blocking1():
while True:
yield 'first blocking function example'
def blocking2():
while True:
yield 'second blocking function example'
for i in blocking1():
print 'this will be shown'
for i in blocking2():
print 'this will not be shown'
मेरे पास दो फ़ंक्शन हैं जिनमें while True
loops शामिल हैं। इससे डेटा मिलेगा जो मैं फिर कहीं लॉग ऑन करूंगा (सबसे अधिक संभावना है, एक एसक्लाइट डेटाबेस में)।
मैं थ्रेडिंग के साथ खेल रहा हूं और इसे काम कर लिया है। हालांकि, मुझे वास्तव में यह पसंद नहीं है ... मैं जो करना चाहता हूं वह मेरे अवरुद्ध कार्यों को असीमित बना देता है। कुछ ऐसा है:
def blocking1(callback):
while True:
callback('first blocking function example')
def blocking2(callback):
while True:
callback('second blocking function example')
def log(data):
print data
blocking1(log)
blocking2(log)
मैं इसे पायथन में कैसे प्राप्त कर सकता हूं? मैंने देखा है कि मानक पुस्तकालय एसिंककोर के साथ आता है और इस गेम में बड़ा नाम ट्विस्ट किया गया है लेकिन इनमें से दोनों सॉकेट आईओ के लिए उपयोग किए जाने लगते हैं।
मैं अपने गैर-सॉकेट से संबंधित, अवरुद्ध कार्यों को कैसे जोड़ सकता हूं?
'क्या मैं करना चाहता हूं कि मेरे अवरुद्ध कार्यों को अतुल्यकालिक बनाएं 'इससे कोई अर्थ नहीं आता है। आप या तो अपने फ़ंक्शन को ब्लॉक करना चाहते हैं, या आप इसे अतुल्यकालिक चाहते हैं। यदि आप इसे अतुल्यकालिक चाहते हैं, तो थ्रेड का उपयोग करें। मुझे नहीं पता कि समस्या क्या है। – Falmarri
मैं चाहता हूं कि मेरे अवरुद्ध कार्य गैर-अवरुद्ध हो जाएं – dave
ऐसे कई प्रश्न हैं जिनके बारे में उत्तर देने की आवश्यकता है कि उन कार्यों के निष्पादन को एक दूसरे के साथ नहीं, बल्कि आपके द्वारा चलाए जाने वाले सभी कोडों के साथ अंतःस्थापित किया जाता है। यह ऑपरेटिंग सिस्टम के लिए है, और आप आम तौर पर ऐसा कुछ क्यों थ्रेड का उपयोग करना चाहते हैं। क्या आप समझा सकते हैं कि आपको थ्रेडिंग के बारे में क्या पसंद नहीं है? यह ठीक तरह की समस्या है कि हल करने के लिए थ्रेडिंग बनाया गया था। –