Asyncio के साथ अनुरोधों (या किसी अन्य ब्लॉकिंग लाइब्रेरी) का उपयोग करने के लिए, आप परिणाम प्राप्त करने के लिए BaseEventLoop.run_in_executor का उपयोग किसी अन्य थ्रेड में चलाने और इससे उपज प्राप्त करने के लिए कर सकते हैं। उदाहरण के लिए:
import asyncio
import requests
@asyncio.coroutine
def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(None, requests.get, 'http://www.google.com')
future2 = loop.run_in_executor(None, requests.get, 'http://www.google.co.uk')
response1 = yield from future1
response2 = yield from future2
print(response1.text)
print(response2.text)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
इससे समानांतर रूप से दोनों प्रतिक्रियाएं मिलेंगी।
अजगर 3.5 के साथ आप नए await
/ async
वाक्यविन्यास का उपयोग कर सकते हैं :
import asyncio
import requests
async def main():
loop = asyncio.get_event_loop()
future1 = loop.run_in_executor(None, requests.get, 'http://www.google.com')
future2 = loop.run_in_executor(None, requests.get, 'http://www.google.co.uk')
response1 = await future1
response2 = await future2
print(response1.text)
print(response2.text)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
अधिक के लिए PEP0492 देखें ।
subprocess
अपने कोड को समानांतर करने के लिए उपयोग कर सकते हैं ।