рдкрд╛рдпрдерди рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ, рдХрдм рдФрд░ рдХреИрд╕реЗ рдХрд░реЗрдВ

рд╕рд▓рд╛рдо, рдЦрд╝рдмреНрд░реЛрд╡рд╕реНрдХред рдЕрднреА, OTUS рдиреЗ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдХреЛрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдЯ рдЦреЛрд▓рд╛ рд╣реИ , рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╣рдордиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ "рдкрд░реА рдХрдерд╛" рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рд╣реИред рдЬрд╛рдУред




рдПрдХ рдмрд╛рд░ рдХреА рдмрд╛рдд рд╣реИ, рдПрдХ рджреВрд░, рджреВрд░ рдХреА рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдореЗрдВ ... рдПрдХ

рдмреБрджреНрдзрд┐рдорд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЬрд╛рджреВрдЧрд░ рд░реЗрдЧрд┐рд╕реНрддрд╛рди рдХреЗ рдмреАрдЪ рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЧрд╛рдБрд╡ рдореЗрдВ рд░рд╣рддрд╛ рдерд╛ред рдФрд░ рдЙрдирдХрд╛ рдирд╛рдо рдбрдВрдмрд▓рдбрд▓реНрдл рдерд╛ред рд╡рд╣ рди рдХреЗрд╡рд▓ рдмреБрджреНрдзрд┐рдорд╛рди рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдерд╛, рдмрд▓реНрдХрд┐ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рднреА рдорджрдж рдХрд░рддрд╛ рдерд╛ рдЬреЛ рджреВрд░ рдХреЗ рджреЗрд╢ рд╕реЗ рдЖрдП рдереЗ, рдПрдХ рдЬрд╛рджреВрдЧрд░ рд╕реЗ рдорджрдж рдорд╛рдВрдЧрдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдорд╛рд░реА рдХрд╣рд╛рдиреА рддрдм рд╢реБрд░реВ рд╣реБрдИ рдЬрдм рдПрдХ рдпрд╛рддреНрд░реА рдЬрд╛рджреВрдЧрд░ рдХреЛ рдПрдХ рдЬрд╛рджреВ рдХреА рдХрд┐рддрд╛рдм рд▓рд╛рдпрд╛ред рдпрд╛рддреНрд░реА рдХреЛ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рд╕реНрдХреНрд░реЙрд▓ рдореЗрдВ рдХреНрдпрд╛ рдерд╛, рд╡рд╣ рдХреЗрд╡рд▓ рдпрд╣ рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд░ рдХреЛрдИ рднреА рд╕реНрдХреНрд░реЙрд▓ рдХреЗ рд╕рднреА рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрдВрдмрд▓рдбрдлрд╝ рдерд╛ред

рдЕрдзреНрдпрд╛рдп 1: рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб, рд╕рд┐рдВрдЧрд▓-рдкреНрд░реЛрд╕реЗрд╕


рдпрджрд┐ рдЖрдкрдиреЗ рдЕрднреА рддрдХ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рдирддрд╛ рдЦреАрдВрдЪреАред рд╣рдорд╛рд░рд╛ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдХреНрд░реЙрд▓ рд▓рд┐рдВрдХ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ рдЬреЛ рдкрд╛рдпрдерди рдХреА рд╢рдХреНрддрд┐ рдФрд░ рдЬреНрдЮрд╛рди рдХреЛ рдорд╛рд╕реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЗрддреГрддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рдХрд┐рд╕реА рднреА рдХрдард┐рдирд╛рдИ рдХреЗ рдмрд┐рдирд╛ рд╕реВрдЪреА рдХреЛ рдбрд┐рдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЬрд╛рджреВрдЧрд░ рдХрд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдкрдиреЗ рд╡рдлрд╛рджрд╛рд░ рджреЛрд╕реНрдд (рдЧреИрд░рд┐рдЧреНрдиреЙрд░реНрди рдХреЛ рднреЗрдЬрдирд╛ рдерд╛; рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрди рд╕рднреА рдЬрдЧрд╣реЛрдВ рдкрд░) рдЬреЛ рд╕реНрдХреНрд░реЙрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗред

In [1]:
import urllib.request
from concurrent.futures import ThreadPoolExecutor
In [2]:
urls = [
  'http://www.python.org',
  'https://docs.python.org/3/',
  'https://docs.python.org/3/whatsnew/3.7.html',
  'https://docs.python.org/3/tutorial/index.html',
  'https://docs.python.org/3/library/index.html',
  'https://docs.python.org/3/reference/index.html',
  'https://docs.python.org/3/using/index.html',
  'https://docs.python.org/3/howto/index.html',
  'https://docs.python.org/3/installing/index.html',
  'https://docs.python.org/3/distributing/index.html',
  'https://docs.python.org/3/extending/index.html',
  'https://docs.python.org/3/c-api/index.html',
  'https://docs.python.org/3/faq/index.html'
  ]
In [3]:
%%time

results = []
for url in urls:
    with urllib.request.urlopen(url) as src:
        results.append(src)

CPU times: user 135 ms, sys: 283 ┬╡s, total: 135 ms
Wall time: 12.3 s
In [ ]:

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдХреЗрд╡рд▓ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ-рдПрдХ рдХрд░рдХреЗ URLs рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрддреНрддрд░ рдкрдврд╝рддреЗ рд╣реИрдВред %% рд╕рдордп рдФрд░ IPython рдХреЗ рдЬрд╛рджреВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж , рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореЗрд░реЗ рдЙрджрд╛рд╕ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╕рд╛рде рд▓рдЧрднрдЧ 12 рд╕реЗрдХрдВрдб рд▓рдЧ рдЧрдПред

рдЕрдзреНрдпрд╛рдп 2: рдЧреБрдгрд╛ рдХрд░рдирд╛


рдпрд╣ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЬрд╛рджреВрдЧрд░ рдЕрдкрдиреА рдмреБрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рдерд╛, рд╡рд╣ рдЬрд▓реНрджреА рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рддрд░реАрдХреЗ рд╕реЗ рдЖрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд╛рди рдкрд░ рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдХреНрдпреЛрдВ рди рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рджрд▓ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдП! рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд╕рднреА рдЬреНрдЮрд╛рди рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ рдЬреЛ рд╡реЗ рдПрдХ рдмрд╛рд░ рдореЗрдВ рд▓рд╛рддреЗ рд╣реИрдВ!

рдпрд╣ рд╕рд╣реА рд╣реИ, рд╕реВрдЪреА рдХреЛ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдПрдХ рд▓реВрдк рдореЗрдВ рджреЗрдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ URL рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

In [1]:
import urllib.request
from concurrent.futures import ThreadPoolExecutor
In [2]:
urls = [
  'http://www.python.org',
  'https://docs.python.org/3/',
  'https://docs.python.org/3/whatsnew/3.7.html',
  'https://docs.python.org/3/tutorial/index.html',
  'https://docs.python.org/3/library/index.html',
  'https://docs.python.org/3/reference/index.html',
  'https://docs.python.org/3/using/index.html',
  'https://docs.python.org/3/howto/index.html',
  'https://docs.python.org/3/installing/index.html',
  'https://docs.python.org/3/distributing/index.html',
  'https://docs.python.org/3/extending/index.html',
  'https://docs.python.org/3/c-api/index.html',
  'https://docs.python.org/3/faq/index.html'
  ]
In [4]:
%%time

with ThreadPoolExecutor(4) as executor:
    results = executor.map(urllib.request.urlopen, urls)

CPU times: user 122 ms, sys: 8.27 ms, total: 130 ms
Wall time: 3.83 s
In [5]:
%%time

with ThreadPoolExecutor(8) as executor:
    results = executor.map(urllib.request.urlopen, urls)

CPU times: user 122 ms, sys: 14.7 ms, total: 137 ms
Wall time: 1.79 s
In [6]:
%%time

with ThreadPoolExecutor(16) as executor:
    results = executor.map(urllib.request.urlopen, urls)

CPU times: user 143 ms, sys: 3.88 ms, total: 147 ms
Wall time: 1.32 s
In [ ]:

рдХрд╛рдлреА рдмреЗрд╣рддрд░! рд▓рдЧрднрдЧ рдЬреИрд╕реЗ ... рдЬрд╛рджреВред рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ I / O рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдкрдврд╝рдиреЗ рд╡рд╛рд▓реЗ URL рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рд▓рдВрдмрддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВред I / O рд╕реЗ рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдкрдиреЗ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ рдмрд┐рддрд╛рддреЗ рд╣реИрдВ, рдЖрдкрдиреЗ рдЗрд╕рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, рдЗрдирдкреБрдЯ рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП (рдЬреИрд╕реЗ рдХреЛрдИ рдЬрд╛рджреВрдЧрд░ рдЕрдкрдиреЗ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕реНрдХреНрд░реЙрд▓ рд╕реЗ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╛рдиреЗ рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдиреЗрдЯрд╡рд░реНрдХ, рдбреЗрдЯрд╛рдмреЗрд╕, рдлрд╝рд╛рдЗрд▓, рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕реЗ I / O рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ I / i рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрд░реЛрдд рдХреЛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ (рд▓рдЧрднрдЧ рдПрдХ рдЧрддрд┐ рд╕реЗ) рдбреЗрдЯрд╛ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛рдЬреИрд╕реЗ рдлреНрд▓реИрд╢ рдмрдирд╛рдо рдЕрдкрдиреА рджрд╛рджреА)ред

рдиреЛрдЯ : multithreadingрд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреА рд╕рдлрд╛рдИ рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдзреНрдпрд╛рдп 3: рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ


рд╕рд╛рд▓ рдмреАрддрддреЗ рдЧрдП, рдЕрдЪреНрдЫреЗ рдЬрд╛рджреВрдЧрд░ рдХреА рдкреНрд░рд╕рд┐рджреНрдзрд┐ рдмрдврд╝рддреА рдЧрдИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рд╖реНрдкрдХреНрд╖ рдЕрдВрдзреЗрд░реЗ рдЬрд╛рджреВрдЧрд░ (рд╕рд░реБрдореЛрд░реНрдЯ? рдпрд╛ рд╢рд╛рдпрдж рд╡реЛрд▓реИрдВрдбрдореИрди?) рдХреА рдИрд░реНрд╖реНрдпрд╛ рдмрдврд╝реАред рдЕрджрдореНрдп рдЪрд╛рд▓рд╛рдХ рдХреЗ рд╕рд╛рде рд╕рд╢рд╕реНрддреНрд░ рдФрд░ рдИрд░реНрд╖реНрдпрд╛ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд, рдЕрдВрдзреЗрд░реЗ рдЬрд╛рджреВрдЧрд░ рдиреЗ рдбрдВрдмрд▓рдбрд╛рд▓ рдкрд░ рдПрдХ рднрдпрд╛рдирдХ рдЕрднрд┐рд╢рд╛рдк рдбрд╛рд▓рд╛ред рдЬрдм рд╢рд╛рдк рдиреЗ рдЙрд╕реЗ рдЦрддреНрдо рдХрд░ рджрд┐рдпрд╛, рддреЛ рдбрдВрдмрд▓рдбрдл рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЙрд╕реЗ рджреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рдХреНрд╖рдг рдереЗред рд╣рддрд╛рд╢, рдЙрд╕рдиреЗ рдЕрдкрдиреА рд╡рд░реНрддрдиреА рдкреБрд╕реНрддрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдлрд╡рд╛рд╣ рдЙрдбрд╝рд╛рдИ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдХрд╛рдЙрдВрдЯрд░-рд╕реНрдкреЗрд▓ рдорд┐рд▓рд╛ рдЬреЛ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ред рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЛ 1,000,000 рд╕реЗ рдХрдо рд╕рднреА primes рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдПрдХ рдЕрдЬреАрдм рдЬрд╛рджреВ, рдмреЗрд╢рдХ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╣реИред

рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдЬрд╛рдирддрд╛ рдерд╛ рдХрд┐ рдпрджрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдордп рд╣реИ, рддреЛ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рддреБрдЪреНрдЫ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдкрд╛рд╕ рд╡рд╣ рд╡рд┐рд▓рд╛рд╕рд┐рддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╡рд╣ рдПрдХ рдорд╣рд╛рди рдЬрд╛рджреВрдЧрд░ рд╣реИ, рдлрд┐рд░ рднреА рд╡рд╣ рдЕрдкрдиреА рдорд╛рдирд╡рддрд╛ рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ рдФрд░ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╛рджрдЧреА рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ рдЙрд╕рдиреЗ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдмрд╕ рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рдЗрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рддреЛ рдмрд╣реБрдд рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рдЬрдм рдХрд╛рдЙрдВрдЯрд░рдкреЗрд▓ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реЗрдХрдВрдб рдмрдЪреЗ рдереЗ, рддреЛ рдЙрд╕реЗ рдЕрдЪрд╛рдирдХ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдордВрддреНрд░ рдпрд╛рдж рдЖрдпрд╛ , рдЬреЛ рдЙрд╕рдиреЗ рдХрдИ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдЬрд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рд╕реЗ рд╕реАрдЦрд╛ рдерд╛ред рдпрд╣ рд╡рд░реНрддрдиреА рдЙрд╕реЗ рдЕрдкрдиреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЙрд╕реЗ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдкрдиреА рдФрд░ рдЙрд╕рдХреА рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬреЗред

In [1]:
from multiprocessing import Pool
In [2]:
def if_prime(x):
    if x <= 1:
        return 0
    elif x <= 3:
        return x
    elif x % 2 == 0 or x % 3 == 0:
        return 0
    i = 5
    while i**2 <= x:
        if x % i == 0 or x % (i + 2) == 0:
            return 0
        i += 6
    return x
In [17]:
%%time

answer = 0

for i in range(1000000):
    answer += if_prime(i)

CPU times: user 3.48 s, sys: 0 ns, total: 3.48 s
Wall time: 3.48 s
In [18]:
%%time

if __name__ == '__main__':
    with Pool(2) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

CPU times: user 114 ms, sys: 4.07 ms, total: 118 ms
Wall time: 1.91 s
In [19]:
%%time

if __name__ == '__main__':
    with Pool(4) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

CPU times: user 99.5 ms, sys: 30.5 ms, total: 130 ms
Wall time: 1.12 s
In [20]:
%%timeit

if __name__ == '__main__':
    with Pool(8) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

729 ms ┬▒ 3.02 ms per loop (mean ┬▒ std. dev. of 7 runs, 1 loop each)
In [21]:
%%timeit

if __name__ == '__main__':
    with Pool(16) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

512 ms ┬▒ 39.8 ms per loop (mean ┬▒ std. dev. of 7 runs, 1 loop each)
In [22]:
%%timeit

if __name__ == '__main__':
    with Pool(32) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

518 ms ┬▒ 13.3 ms per loop (mean ┬▒ std. dev. of 7 runs, 1 loop each)
In [23]:
%%timeit

if __name__ == '__main__':
    with Pool(64) as p:
        answer = sum(p.map(if_prime, list(range(1000000))))

621 ms ┬▒ 10.5 ms per loop (mean ┬▒ std. dev. of 7 runs, 1 loop each)
In [ ]:

рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреЛрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ ред рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдХрд╛рд░реНрдп рдРрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИрдВ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рд╡реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ (рддреБрдЪреНрдЫ рдЧрдгрд┐рддреАрдп рдЧрдгрдирд╛, рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг, рдЖрджрд┐) рдкрд░ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЧрдгрдирд╛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрд▓рдмреНрдз рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рдмреАрдЪ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЧрддрд┐ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред

рддреБрдордХреЛ рдмрд╕ рдпрд╣ рдХрд░рдирд╛ рд╣реИ:

  1. рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИред
  2. рдЙрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рддреИрдпрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рди рдкрд░ рдлрд╝рдВрдХреНрд╢рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛;
  3. multiprocessing.Pool. , Pool(), . with , .
  4. Pool map. map , , .

рдиреЛрдЯ : рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЧрдгрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рддреЛ рд╣рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИmultiprocessingрдФрд░multithreading? рдпрджрд┐ рдЖрдкрдиреЗ рдХрднреА рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл рднрдпрд╛рдирдХ рд╣реИ! рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖред

рдЬрд┐рд╕ рддрд░рд╣ рдПрдХ рдЬрд╛рджреВрдЧрд░ рдЕрдкрдиреЗ рдорд╛рдирд╡ рд╕реНрд╡рднрд╛рд╡ рд╕реЗ рд╕реАрдорд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рдПрдХ рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдкрд╛рдЗрдерди рдЧреНрд▓реЛрдмрд▓ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рд▓реЙрдХ (рдЬреАрдЖрдИрдПрд▓) рдирд╛рдордХ рдПрдХ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдЕрдЬрдЧрд░ рдЖрдкрдХреЛ рдЬрд┐рддрдиреЗ рдЪрд╛рд╣реЗ рдЙрддрдиреЗ рдзрд╛рдЧреЗ рджреЗ рдХрд░ рдЦреБрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреА.рдЖрдИ.рдПрд▓.рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдХрд┐рд╕реА рднреА рд╕рдордп рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдЧрд╛ред

I / O рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрдерд┐рддрд┐ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдПрдХ рдереНрд░реЗрдб рдПрдХ URL рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рддрднреА рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рджреВрд╕рд░реЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп URL рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдЧрд╛ред рдЪреВрдБрдХрд┐ рдзрд╛рдЧрд╛ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рддрдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдИ рдереНрд░реЗрдбреНрд╕ рд╣реЛрдирд╛ рдХрд╡рдЪ рдореЗрдВ рдирд┐рдкрд▓реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рдЧрднрдЧ рдмреЗрдХрд╛рд░ рд╣реИред рдЪреВрдВрдХрд┐ рдкреНрд░рддрд┐ рдпреВрдирд┐рдЯ рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдХрдИ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕рд╛рджрдЧреА рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдВрдмрд░ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдкреНрд░реЛрд╕реЗрд╕рд░ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рдЕрднреА рднреА рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдЬрд╛рдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред рдФрд░ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдУрд╡рд░рд╣реЗрдб рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕реЗ рдЖрдк multithreadingрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред

рдЗрд╕ "рдкреНрд░рддрд┐рдмрдВрдз" рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВmultiprocessingред рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ ... рдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдкрдирд╛ рдирд┐рдЬреА рджреБрднрд╛рд╖рд┐рдпрд╛ рдФрд░ рдореЗрдореЛрд░реА рд╕реНрдкреЗрд╕ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП GIL рдЖрдкрдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧреА рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдиреВрдареЗ рдирдВрдмрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧреА, рдФрд░ рдпрд╣ рдПрдХ рд╕рд╛рде рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдХрд╛рдо рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрд┐рддрдирд╛ рдкреНрдпрд╛рд░рд╛ рд╣реИ рдЙрдирдХрд╛!

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк multiprocessingрд▓реВрдк рдХреЗ рд▓рд┐рдП рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реАрдкреАрдпреВ рд▓реЛрдб рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ multithreadingред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдХ рдХреЛрд░ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдХрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ!

рдЙрд╕реЗ рдпрд╛рдж рд░рдЦреЛmultiprocessingрдХрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЕрдкрдирд╛ рдЙрдкрд░рд┐ рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреА рд▓рд╛рдЧрдд рд╕реЗ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реИред (рдорд▓реНрдЯреАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреБрднрд╛рд╖рд┐рдпреЛрдВ рдХреЛ рдЬрдиреНрдо рджреЗрддреА рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░ рдЕрд╕рд╛рдЗрди рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд╛рдВ!), рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд╣рд▓реНрдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (I / O рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╛рдж рд░рдЦреЗрдВ)ред рд▓реЗрдХрд┐рди рдЬрдм рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдЧрдгрдирд╛ рдПрдХ рдЕрдбрд╝рдЪрди рдмрди рдЬрд╛рддреА рд╣реИ, рддреЛ рдореЙрдбреНрдпреВрд▓ рд╕рдордп рдЖрддрд╛ рд╣реИ multiprocessingред рд▓реЗрдХрд┐рди рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдорд╣рд╛рди рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрдбрд╝реА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдЖрддреА рд╣реИред

рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕рдордп рдХреА рдкреНрд░рддрд┐ рдЗрдХрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧреАред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рдмреАрдЪ рдлреЗрд░рдмрджрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред рд╣рдХреАрдХрдд рдореЗрдВ, рд╕рдм рдХреБрдЫ рдФрд░ рднреА рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЖрдЬ рдЖрдкрдХреЛ рдмрддрд╛рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЕрд╡рдЧрдд рдХрд░рд╛рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 16 рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рдХрдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдХреЗрд╡рд▓ 16 рддрд╛рд░реНрдХрд┐рдХ рдХреЛрд░ рд╣реИрдВред

рдЕрдзреНрдпрд╛рдп 4: рдирд┐рд╖реНрдХрд░реНрд╖


  • I / O рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдпрд╣ multithreadingрдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, multiprocessingрдпрд╣ рдЙрддреНрдкрд╛рджрдХрддрд╛ рднреА рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЧрдд рдЕрдзрд┐рдХ рд╣реЛрддреА рд╣реИ multithreadingред
  • рдкрд╛рдпрдерди рдЬреАрдЖрдИрдПрд▓ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдордп рдХреЗрд╡рд▓ рдПрдХ рдзрд╛рдЧрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧ multithreadingрдкреНрд░рджрд░реНрд╢рди рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧ multiprocessingрдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдЬрд╛рджреВрдЧрд░ рдХрдорд╛рд▓ рдХреЗ рд╣реИрдВ!

рдпрд╣реА рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ рд╣рдо рдЖрдЬ multithreadingрдФрд░ multiprocessingрдкрд╛рдпрдерди рдореЗрдВ рдЕрдкрдирд╛ рдкрд░рд┐рдЪрдп рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ ред рдЕрдм рдЬрд╛рдУ рдФрд░ рдЬреАрддреЛ!



"рдЧреНрд░рд╛рдл рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЦреБрд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓рд┐рдВрдЧ COVID -19ред" рдореБрдлреНрдд рдкрд╛рдаред

All Articles