2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
कोरौटिन् एकः कार्यक्रमघटकः अस्ति यः कार्यक्रमस्य बहुविधप्रवेशबिन्दून् विशिष्टस्थानेषु निष्पादनं निलम्बयितुं पुनः आरभ्यतुं च शक्नोति । थ्रेड्-प्रोसेस्-इत्येतयोः विपरीतम्, कोर्युटिन्-स्विचिंग्-इत्येतत् स्पष्टतया प्रोग्रामर-द्वारा नियन्त्रितं भवति न तु ऑपरेटिंग्-प्रणालीद्वारा निर्धारितम् । एतेन सन्दर्भ-स्विच-करणसमये कोर्युटिन् अधिकं लघु भवति, यतः सम्पूर्णं निष्पादन-वातावरणं (यथा थ्रेड्-स्टैक्) रक्षितुं पुनर्स्थापनं च कर्तुं आवश्यकता नास्ति
पायथन् इत्यस्मिन् मुख्यतया कोर्युटिन् गच्छन्तिasync
तथाawait
साधयितुं कीवर्डाः। एतेषां कीवर्ड-शब्दानां उपयोगेन परिभाषिताः कार्याणि "coroutine functions" इति उच्यन्ते तथा च ते आह्वानसमये तत्क्षणमेव निष्पादयन्ति, अपितु तस्य स्थाने coroutine-वस्तुं प्रत्यागच्छन्ति । इदं coroutine ऑब्जेक्ट् इवेण्ट् लूप् इत्यस्मिन् निष्पादनार्थं शेड्यूल् करणीयम् ।
अतुल्यकालिकप्रोग्रामिंग् इति समवर्तीप्रतिरूपं यत् कतिपयानां दीर्घकालं यावत् चलितानां कार्याणां (यथा I/O कार्याणि) पूर्णतां प्रतीक्षमाणः कार्यक्रमं अन्यकार्यं निरन्तरं कर्तुं शक्नोति पायथन् इत्यस्मिन् प्रायः कोर्युटिन् इत्यनेन सह अतुल्यकालिकप्रोग्रामिंग् इत्यस्य उपयोगः भवति, यस्य निष्पादनं इवेण्ट् लूप् इत्यस्य माध्यमेन निर्धारितं भवति ।
async
तथाawait
async def
कोर्युटिन फंक्शन् परिभाषितुं ।await
अन्यस्य कोर्युटिन् अथवा अतुल्यकालिकस्य क्रियायाः समाप्तेः प्रतीक्षां कर्तुं ।asyncio
पुस्तकालयः इवेण्ट् लूप् इत्यस्य कार्यान्वयनम् प्रदाति । भवता सुनिश्चितं कर्तव्यं यत् भवतः अतुल्यकालिकसङ्केतः कस्मिन्चित् इवेण्ट् लूप् मध्ये चाल्यते ।asyncio.run(main())
भवतः मुख्यं coroutine कार्यं चालयितुं, यत् स्वयमेव इवेण्ट् लूप् निर्माति प्रबन्धयति च ।python复制代码
import asyncio | |
# 定义一个异步函数,模拟一个耗时的I/O操作 | |
async def fetch_data(url): | |
print(f"Fetching {url}...") | |
# 模拟耗时操作 | |
await asyncio.sleep(1) | |
return f"Data from {url}" | |
async def main(): | |
# 同时启动多个异步任务 | |
task1 = asyncio.create_task(fetch_data('http://example.com/data1')) | |
task2 = asyncio.create_task(fetch_data('http://example.com/data2')) | |
# 等待所有任务完成 | |
result1, result2 = await asyncio.gather(task1, task2) | |
print(result1) | |
print(result2) | |
# 运行主协程 | |
asyncio.run(main()) |
अस्मिन् उदाहरणे .fetch_data
एकं अतुल्यकालिकं कार्यम् अस्ति यत् संजाल-अनुरोधानाम् अनुकरणं करोति ।main
फंक्शन् मध्ये वयं एकस्मिन् समये द्वौ आरब्धाःfetch_data
एकं अतुल्यकालिकं कार्यं उपयोगः चawait asyncio.gather()
तेषां एकस्मिन् समये समाप्तिं प्रतीक्ष्यताम्।
asyncio
इदं Python मानकपुस्तकालयस्य भागः अस्ति तथा च coroutines तथा asynchronous programming इत्यस्य समर्थनार्थं उपयुज्यते ।इदं समृद्धं एपिआइ अपि प्रदाति यथा...asyncio.Queue
、asyncio.Lock
इत्यादीनि, अतुल्यकालिकसङ्केते समवर्ती-समन्वयन-समस्यानां निबन्धनार्थम् ।