Мазмунга өтүү

Конкуренттүүлүк: агымдар жана GIL

Сабактын башталышы

Конкуренттүүлүк: агымдар жана GIL

Убакытта кайчылашкан ишти агымдар менен аткарыңыз, GIL аларды эмне үчүн чектээрин түшүнүңүз жана жалпы абалды кулпулар менен туура кармаңыз

Негизги идея: Агым бир Python процессине убакытта кайчылашкан бир нече ишти жасоого мүмкүндүк берет. Бирок CPython өзүнүн ички түзүлүшүн бир мьютекс менен коргойт — глобалдык интерпретатор кулпусу (GIL): каалаган учурда Python байткодун бир гана агым аткарат. Ошондуктан агымдар I/O-bound иш үчүн (тармакты, дискти же маалымат базасын күтүү) чыныгы ылдамдатуу берет, бирок CPU-bound иш үчүн дээрлик эч нерсе бербейт. Эки агым бир эле өзгөрүлмө маалыматка тийгенде, ал жетүүнү Lock менен сериялаштырышыңыз керек, антпесе жарыш абалын аласыз.
Аягында сиз буларды жасай аласыз:
  • конкуренттүүлүктү параллелизмден ажырата аласыз,
  • threading модулу менен агымдарды баштайсыз жана кошосуз,
  • GIL эмнени кепилдеп, эмнеге турарын түшүндүрөсүз,
  • агымдар качан жардам берерин (I/O-bound), качан бербесин (CPU-bound) чечесиз,
  • жарыш абалын байкап, аны Lock же with lock: менен оңдойсуз,
  • агымдарды кол менен башкаруунун ордуна ThreadPoolExecutor жана queue.Queue колдоносуз.

1. Конкуренттүүлүк параллелизм эмес

Конкуренттүүлүк бул программаны бир нече тапшырма бир убакта процессте болгондой куруу ыкмасы — аларды бир өзөктө кезектешип аткарууга болот, ар бири кезек менен бир аз алдыга жылат. Параллелизм бул тапшырмалар так бир учурда бир нече өзөктө аткарылганда. Конкуренттүүлүк көп нерсе менен күрөшүү жөнүндө; параллелизм көп нерсени бир убакта жасоо жөнүндө. CPython'догу агымдар конкуренттүүлүк берет; GIL себебинен алар таза Python CPU иши үчүн параллелизмди сейрек берет.

Бул айырма бүт теманын ачкычы. Агымдар программага көп нерсени бир убакта күтүүгө мүмкүндүк берет — жыйырма ачык сокет, он файл, беш HTTP суроо — ошентип жалпы саат убактысы бардыгынын суммасына эмес, эң узак жалгыз күтүүгө жакындайт. Алар жасай албаган нерсе — бир CPU оор Python циклин тезирээк бүтүрүү.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө