प्रौद्योगिकी साझेदारी

पायथन् मध्ये coroutines किम् अस्ति तथा च Python मध्ये asynchronous programming कथं कार्यान्वितुं शक्यते

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

कोरौटिन

कोरौटिन् एकः कार्यक्रमघटकः अस्ति यः कार्यक्रमस्य बहुविधप्रवेशबिन्दून् विशिष्टस्थानेषु निष्पादनं निलम्बयितुं पुनः आरभ्यतुं च शक्नोति । थ्रेड्-प्रोसेस्-इत्येतयोः विपरीतम्, कोर्युटिन्-स्विचिंग्-इत्येतत् स्पष्टतया प्रोग्रामर-द्वारा नियन्त्रितं भवति न तु ऑपरेटिंग्-प्रणालीद्वारा निर्धारितम् । एतेन सन्दर्भ-स्विच-करणसमये कोर्युटिन् अधिकं लघु भवति, यतः सम्पूर्णं निष्पादन-वातावरणं (यथा थ्रेड्-स्टैक्) रक्षितुं पुनर्स्थापनं च कर्तुं आवश्यकता नास्ति

पायथन् इत्यस्मिन् मुख्यतया कोर्युटिन् गच्छन्तिasyncतथाawait साधयितुं कीवर्डाः। एतेषां कीवर्ड-शब्दानां उपयोगेन परिभाषिताः कार्याणि "coroutine functions" इति उच्यन्ते तथा च ते आह्वानसमये तत्क्षणमेव निष्पादयन्ति, अपितु तस्य स्थाने coroutine-वस्तुं प्रत्यागच्छन्ति । इदं coroutine ऑब्जेक्ट् इवेण्ट् लूप् इत्यस्मिन् निष्पादनार्थं शेड्यूल् करणीयम् ।

अतुल्यकालिक प्रोग्रामिंग

अतुल्यकालिकप्रोग्रामिंग् इति समवर्तीप्रतिरूपं यत् कतिपयानां दीर्घकालं यावत् चलितानां कार्याणां (यथा I/O कार्याणि) पूर्णतां प्रतीक्षमाणः कार्यक्रमं अन्यकार्यं निरन्तरं कर्तुं शक्नोति पायथन् इत्यस्मिन् प्रायः कोर्युटिन् इत्यनेन सह अतुल्यकालिकप्रोग्रामिंग् इत्यस्य उपयोगः भवति, यस्य निष्पादनं इवेण्ट् लूप् इत्यस्य माध्यमेन निर्धारितं भवति ।

पायथन् मध्ये अतुल्यकालिकप्रोग्रामिंगं कथं कार्यान्वितम्

1. प्रयोगःasyncतथाawait
  • कोरटीन कार्य परिभाषित करें:उपयुञ्जताम्‌async defकोर्युटिन फंक्शन् परिभाषितुं ।
  • कोरौटिनस्य प्रतीक्षां कुर्वन्तु: coroutine function इत्यस्य अन्तः, भवान् उपयोक्तुं शक्नोतिawaitअन्यस्य कोर्युटिन् अथवा अतुल्यकालिकस्य क्रियायाः समाप्तेः प्रतीक्षां कर्तुं ।
2. इवेण्ट् लूप् इत्यस्य उपयोगं कुर्वन्तु
  • अजगरasyncio पुस्तकालयः इवेण्ट् लूप् इत्यस्य कार्यान्वयनम् प्रदाति । भवता सुनिश्चितं कर्तव्यं यत् भवतः अतुल्यकालिकसङ्केतः कस्मिन्चित् इवेण्ट् लूप् मध्ये चाल्यते ।
  • उपयुञ्जताम्‌asyncio.run(main())भवतः मुख्यं coroutine कार्यं चालयितुं, यत् स्वयमेव इवेण्ट् लूप् निर्माति प्रबन्धयति च ।
3. नमूना कोड
 

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()तेषां एकस्मिन् समये समाप्तिं प्रतीक्ष्यताम्।

4. सावधानताः
  • अतुल्यकालिकप्रोग्रामिंग् तथा कोरूटिन्स् समवर्तीतायाः निवारणं सुलभं कुर्वन्ति, परन्तु अतुल्यकालिकसन्दर्भप्रबन्धनम्, त्रुटिनियन्त्रणम् इत्यादीनि नूतनानि जटिलतानि अपि प्रवर्तयन्ति
  • अतुल्यकालिकसङ्केतस्य डिजाइनं कुर्वन्, के के क्रियाः अवरुद्धाः सन्ति (उदाहरणार्थं, समकालिक I/O क्रियाः) इति विशेषतया ध्यानं ददातु, तथा च यदा सम्भवं तदा पुस्तकालयानाम् एपिआइ-योः च अतुल्यकालिकसंस्करणानाम् उपयोगं कुर्वन्तु
  • asyncio इदं Python मानकपुस्तकालयस्य भागः अस्ति तथा च coroutines तथा asynchronous programming इत्यस्य समर्थनार्थं उपयुज्यते ।इदं समृद्धं एपिआइ अपि प्रदाति यथा...asyncio.Queueasyncio.Lockइत्यादीनि, अतुल्यकालिकसङ्केते समवर्ती-समन्वयन-समस्यानां निबन्धनार्थम् ।