+ All Categories
Home > Software > Про асинхронность / Максим Щепелин / Web Developer Wargaming

Про асинхронность / Максим Щепелин / Web Developer Wargaming

Date post: 02-Jul-2015
Category:
Upload: python-meetup
View: 257 times
Download: 3 times
Share this document with a friend
Description:
Речь пойдет о двух языках: Python и Javascript. Максим расскажет об асинхронной работе Python и Javascript, что даст возможность слушателям приобщиться к особой касте разработчиков, работающих с Twisted.
16
Asynchronous programming JS and python inside Maxim Schepelin
Transcript
Page 1: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Asynchronous programmingJS and python inside

Maxim Schepelin

Page 2: Про асинхронность / Максим Щепелин / Web Developer Wargaming
Page 3: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Contents

● Python.● What is call stack?● Where callbacks come from?● How asynchronous code execution works?● Summary

Page 4: Про асинхронность / Максим Щепелин / Web Developer Wargaming

def multiply(x, y): return x * y def square(x): return multiply(x, x) def print_result(n): result = square(n) sys.stdout.write(result)

if __name__ == '__main__': print_result(4)

Code: Call stack:

main

print_result

square

multiply

Page 5: Про асинхронность / Максим Щепелин / Web Developer Wargaming

def foo(): foo()

if __name__ == '__main__': foo()

Code: Call stack:

main

foo

foo

foo

foo

foo

foo

foo

RuntimeError: maximum recursion depth exceeded

Page 6: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Contents

● Python.● What is call stack?● Where callbacks come from?● How asynchronous code execution works?● Summary

Page 7: Про асинхронность / Максим Щепелин / Web Developer Wargaming

console.log(1);console.log(2);setTimeout(function ( ) { console.log(4);}, 500);console.log(3);

Code: Call stack:

main

console.logsetTimeout

anonymous func

Page 8: Про асинхронность / Максим Щепелин / Web Developer Wargaming

console.log(1);console.log(2);setTimeout(function ( ) { console.log(4);}, 500);console.log(3);

Code: Call stack:

main

console.logsetTimeout

anonymous func

Browser engine:

Timer(cb)

Callback queue: callback

1

2

3

Page 9: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Contents

● Python.● What is call stack?● Where callbacks come from?● How asynchronous code execution works?● Summary

Page 10: Про асинхронность / Максим Щепелин / Web Developer Wargaming
Page 11: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Asynchronous workflow

Call stack

External APICallback

queue

Async callEvent-loop

Page 12: Про асинхронность / Максим Щепелин / Web Developer Wargaming

console.log(1);console.log(2);setTimeout(function ( ) { console.log(4);}, 0);console.log(3);

Code: Call stack:

main

console.logsetTimeout

anonymous func

Browser engine:

Timer(cb)

Callback queue: callback

1

2

3

Page 13: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Callbacks are invoked only when call stack is

emtpy!

Page 14: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Contents

● Python.● What is call stack?● Where callbacks come from?● How asynchronous code execution works?● Summary

Page 15: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Summary

● Asynchromous != multithreading● Heavy things blocks the event-loop● It’s still single thread

Page 16: Про асинхронность / Максим Щепелин / Web Developer Wargaming

Q&Aschepelin

Maxim Schepelin


Recommended