Yandex.Direct API рдЙрджрд╛рд╣рд░рдг (рднрд╛рдЧ 1) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЖрд░-рднрд╛рд╖рд╛ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдЧрддрд┐ рдХреИрд╕реЗ рджреЗрдВ

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


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


рдЫрд╡рд┐


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


рд╕рд╛рдордЧреНрд░реА



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


рдХреНрдпрд╛ рд╣реИ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ


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


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


рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдирд┐рдореНрди рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВ:


рдЫрд╡рд┐


рджреА рдЧрдИ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рд╕рд╢рд░реНрдд рд╕рдордп рдЗрдХрд╛рдЗрдпрд╛рдБ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реЗрдХрдВрдб, рдорд┐рдирдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдордп рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред


рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдореЗрдВ 4 рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди рдХреА рдПрдХ рдЕрд▓рдЧ рдЧрдгрдирд╛ рдЕрд╡рдзрд┐ рд╣реЛрддреА рд╣реИ, рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ, рд╕рднреА 4 рдСрдкрд░реЗрд╢рди рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдХреБрд▓ рд╕рдордп t1 + t2 + t3 + t4, 3 + 1 рд╣реЛрдЧрд╛ + рел + рек = резрейред


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


рд╣рдо рдХрд┐рди рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ


рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо doSNOW , doSNOW рдФрд░ doParallel рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


foreach рдкреИрдХреЗрдЬ рдЖрдкрдХреЛ foreach рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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


рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ, rbenchmark рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ rbenchmark рд╣рдо рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╕рднреА рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Yandex.Direct API рд╕реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЕрд╡рдзрд┐ рдХреЛ рдорд╛рдкреЗрдВрдЧреЗ рдФрд░ рддреБрд▓рдирд╛ рдХрд░реЗрдВрдЧреЗред


Yandex.Direct API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо ryandexdirect рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред


рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:


 install.packages("foreach") install.packages("doSNOW") install.packages("doParallel") install.packages("rbenchmark") install.packages("ryandexdirect") 

рдХрд╛рд░реНрдп


рдЖрдкрдХреЛ рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ Yandex.Direct рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЦрд╛рддреЛрдВ рд╕реЗ рдХреАрд╡рд░реНрдб рдХреА рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо рдХреЛ рдПрдХ рджрд┐рдирд╛рдВрдХ рдлрд╝реНрд░реЗрдо рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЦрд╛рддреЗ рдХреЗ рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдХреАрд╡рд░реНрдб рд╣реЛрддрд╛ рд╣реИред


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдп рдПрдХ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд┐рдЬреНрдЮрд╛рдкрди рдЦрд╛рддреЛрдВ рдкрд░ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЛ рдХрд░реЗрдЧрд╛ред


рдпреИрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдгред рдЕрдкреНрд░рддреНрдпрдХреНрд╖


Yandex.Direct рд╡рд┐рдЬреНрдЮрд╛рдкрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╢реБрд░реВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдо рдХреАрд╡рд░реНрдб рдХреА рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВред


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


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


 ryandexdirect::yadirAuth(Login = "    ") 

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


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


рд▓реВрдк рдХреЗ рд▓рд┐рдП рдПрдХрд▓-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕рдорд╛рдзрд╛рди


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


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


рдХреЛрдб 1: рд╣рдо рд▓реВрдк рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ 4 рдЦрд╛рддреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ
 library(ryandexdirect) #   logins <- c("login_1", "login_2", "login_3", "login_4") #    res1 <- data.frame() #    for (login in logins) { temp <- yadirGetKeyWords(Login = login) temp$login <- login res1 <- rbind(res1, temp) } 

рд╕рд┐рд╕реНрдЯрдо.рдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдорд╛рдкрдирд╛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ:


рдХрд╛рдо рдХрд╛ рд╕рдордп:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: 178.83
рд╕рд┐рд╕реНрдЯрдо: 0.63
рдкрд╛рд░рд┐рдд: 320.39


4 рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рдХреАрд╡рд░реНрдб рдХреЗ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ 320 рд╕реЗрдХрдВрдб рд▓рдЧреЗ, рдФрд░ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди yadirGetKeyWords рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЦрд╛рддрд╛ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ 5970 рдХреАрд╡рд░реНрдб рдкреНрд░рд╛рдкреНрдд рд╣реБрдП, 142 рд╕реЗрдХрдВрдб рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЧрдП рдереЗред


рдЖрд░ рдореЗрдВ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд╕рдорд╛рдзрд╛рди


рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо doSNOW рдФрд░ doParallel рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред


рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдПрдкреАрдЖрдИ рдХреА рдЕрдкрдиреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдФрд░ Yandex.Direct API рдХреЛрдИ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, Yandex.Direct API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд╣рддреА рд╣реИ:


рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рд╕реЗ рдкрд╛рдВрдЪ рд╕реЗ рдЕрдзрд┐рдХ рдПрдХ рд╕рд╛рде рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо 4 рдзрд╛рд░рд╛рдУрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдпрд╛рдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВред рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЖрдк 5 рд╕реНрдЯреНрд░реАрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рддрд╣рдд рд╕рднреА рдЕрдиреБрд░реЛрдз рднреЗрдЬ рджреЗрдВред рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 1 рдХреЛрд░ рдкреНрд░рддрд┐ 1 рдереНрд░реЗрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ, рдЖрдк parallel::detectCores(logical = FALSE) рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреМрддрд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, parallel::detectCores(logical = FALSE) рд╣реБрдП рддрд╛рд░реНрдХрд┐рдХ рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ parallel::detectCores(logical = TRUE) ред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рднреМрддрд┐рдХ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдореВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдордЭ рд╕рдВрднрд╡ рд╣реИред


рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, Yandex.Direct API рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдПрдХ рджреИрдирд┐рдХ рд╕реАрдорд╛ рд╣реИ, рдпрд╣ рд╕рднреА рдЦрд╛рддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдСрдкрд░реЗрд╢рди рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдВрдХреЛрдВ рдХреА рдЦрдкрдд рднреА рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреАрд╡рд░реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рдкреВрд░реНрдг рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП 15 рдЕрдВрдХ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ 2000 рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП 3 рдЕрдВрдХ рдХрд╛рдЯреЗ рдЬрд╛рдПрдВрдЧреЗ, рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкреНрд░рдорд╛рдг рдкрддреНрд░ рдореЗрдВ рдЕрдВрдХ рдХреИрд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдЖрдк рдЕрдВрдХ рдФрд░ рдЙрдкрд▓рдмреНрдз рдЕрдВрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕реВрдЪрдирд╛ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ рдЙрдирдХреА рджреИрдирд┐рдХ рд╕реАрдорд╛ yadirGetKeyWords рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдХрдВрд╕реЛрд▓ рдкрд░ рд╡рд╛рдкрд╕ рджреЗрдЦ yadirGetKeyWords рд╣реИрдВред


 Number of API points spent when executing the request: 60 Available balance of daily limit API points: 993530 Daily limit of API points:996000 

рдЖрдЗрдП doSNOW рдФрд░ doParallel рдХреЗ рд╕рд╛рде doSNOW рдХрд░реЗрдВред


DoSNOW рдкреИрдХреЗрдЬ рдФрд░ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ


рд╣рдо рдЧрдгрдирд╛ рдХреЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдореЛрдб рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдСрдкрд░реЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ 4 рдзрд╛рдЧреЗ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рд▓реВрдк рдХреЗ рдмрдЬрд╛рдп, рд╣рдо foreach рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдХреЛрдб 2: рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ doSNOW рдХреЗ рд╕рд╛рде
 library(foreach) library(doSNOW) #   logins <- c("login_1", "login_2", "login_3", "login_4") cl <- makeCluster(4) registerDoSNOW(cl) res2 <- foreach(login = logins, #  -  .combine = 'rbind', #        .packages = "ryandexdirect", #   .inorder=F ) %dopar% {cbind(yadirGetKeyWords(Login = login), login) } stopCluster(cl) 

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, system.time рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдорд╛рдкрдирд╛ рдирд┐рдореНрди рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рддрд╛ рд╣реИ:


рдХрд╛рдо рдХрд╛ рд╕рдордп:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: 0.17
рд╕рд┐рд╕реНрдЯрдо: 0.08
рдкрд╛рд░рд┐рдд: 151.47


рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо, рдЕрд░реНрдерд╛рддреНред рд╣рдореЗрдВ 151 рд╕реЗрдХрдВрдб рдореЗрдВ 4 Yandex.Direct рдЦрд╛рддреЛрдВ рд╕реЗ рдХреАрд╡рд░реНрдб рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдЕрд░реНрдерд╛рдд 2 рдмрд╛рд░ рддреЗрдЬреА рд╕реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдЕрднреА рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЦрд╛рддреЗ (142 рд╕реЗрдХрдВрдб) рд╕реЗ рдХреАрд╡рд░реНрдб рдХреА рд╕реВрдЪреА рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛, рдпрд╛рдиреАред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреБрд▓ рд╕рдордп рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЦрд╛рддреЗ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ foreach рдлрд╝рдВрдХреНрд╢рди рдХреА рдорджрдж рд╕реЗ, рд╣рдордиреЗ рдПрдХ рд╕рд╛рде 4 рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХреА, рдЕрд░реНрдерд╛рддред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рднреА 4 рдЦрд╛рддреЛрдВ рд╕реЗ рдХреНрд░рдорд╢рдГ рдПрдХрддреНрд░рд┐рдд рдбреЗрдЯрд╛, рдХреБрд▓ рд╕рдордп рд╕рдмрд╕реЗ рдмрдбрд╝реЗ рдЦрд╛рддреЗ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред


рдореИрдВ рдХреЛрдб 2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреВрдВрдЧрд╛, makeCluster рдлрд╝рдВрдХреНрд╢рди рдереНрд░реЗрдбреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдордиреЗ 4 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХрд╛ рдПрдХ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ Yandex.Direct API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдЖрдк 5 рдереНрд░реЗрдб рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдХрд┐рддрдиреЗ рднреА рдЕрдХрд╛рдЙрдВрдЯ рд╣реЛрдВред рдЖрдкрдХреЛ 5-15-100 рдпрд╛ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдкреАрдЖрдИ рдХреЛ 5 рдЕрдиреБрд░реЛрдз рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред


рдЕрдЧрд▓рд╛, registerDoSNOW рдлрд╝рдВрдХреНрд╢рди рдирд┐рд░реНрдорд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИред


рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо foreach рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛, рдпрд╣ рдирд┐рд░реНрдорд╛рдг рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИред рдЖрдк рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рд▓реЙрдЧрд┐рди рдХрд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд▓реЙрдЧрд┐рди рд╡реЗрдХреНрдЯрд░ рдХреЗ рддрддреНрд╡реЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░реЗрдЧрд╛, рд╣рдо рд▓реВрдк рдХреЗ for рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ рдпрджрд┐ рд╣рдордиреЗ for ( login in logins) рд▓рд┐рдЦрд╛ рд╣реИред


рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ .com рдореЗрдВ рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:


  • rbind - рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рддрд╣рдд рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рдгрд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ;
  • cbind - рдХреЙрд▓рдо рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ;
  • "+" - рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВред

рдЖрдк рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрд╡-рд▓рд┐рдЦрд┐рдд рднреАред


рддрд░реНрдХ .inorder = F рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдЧрддрд┐ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХреНрд░рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред


рдЗрд╕рдХреЗ рдмрд╛рдж %dopar% рдСрдкрд░реЗрдЯрд░ рдЖрддрд╛ рд╣реИ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдореЛрдб рдореЗрдВ рд▓реВрдк рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк %do% рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╕рд╛рде рд╣реА рд▓реВрдк рдХреЗ for рд╕рд╛рдорд╛рдиреНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред


рд╕реНрдЯреЙрдк рдХреНрд▓рд╕реНрдЯрд░ рдлрд╝рдВрдХреНрд╢рди рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИред


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


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЛрдб рдореЗрдВ, foreach , рдкрд╣рд▓реЗ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ .eachages рдХреЗ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрдирдЪреЗрдХ рдХреЗ рдЕрдВрджрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .packages = c("ryandexdirect", "dplyr", "lubridate") рдореЗрдВ рдЙрдирдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗ рд╕рдВрдХреБрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЙрджрд╛рд╣рд░рдг 2 рдореЗрдВ , рд╣рдо рдмрд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд╝реЙрд░реЗрд╕реНрдЯ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рд░реИрдВрдбреЗрдХреНрд╕рдПрдХреНрд╕реИрдб рдкреИрдХреЗрдЬ рдХреЛ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВред


DoParallel рдкреИрдХреЗрдЬ


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, doSNOW рдФрд░ doParallel рдЬреБрдбрд╝рд╡рд╛рдБ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХрд╛ рд╕рд┐рдВрдЯреЗрдХреНрд╕ рдПрдХ рд╣реА рд╣реИред


рдХреЛрдб 5: рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ doParallel рдХреЗ рд╕рд╛рде
 library(foreach) library(doParallel) logins <- c("login_1", "login_2", "login_3", "login_4") cl <- makeCluster(4) registerDoParallel(cl) res3 <- data.frame() res3 <- foreach(login=logins, .combine= 'rbind', .inorder=F) %dopar% {cbind(ryandexdirect::yadirGetKeyWords(Login = login), login) stopCluster(cl) 

рдХрд╛рдо рдХрд╛ рд╕рдордп:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: 0.25
рд╕рд┐рд╕реНрдЯрдо: 0.01
рдкрд╛рд░рд┐рдд: 173.28


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп doSNOW рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рдирд╛рдВрддрд░ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЛрдб рдХреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╣реИред


рддреАрди рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЗ рдмреАрдЪ рдЧрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреА


рдЕрдм rbenchmark рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдкреАрдб рдЯреЗрд╕реНрдЯ rbenchmark ред


рдЫрд╡рд┐


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 4 рдЦрд╛рддреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдкрд░, doSNOW рдФрд░ doParallel рдХреЛ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 2 рдЧреБрдирд╛ рддреЗрдЬреА рд╕реЗ рдХреАрд╡рд░реНрдб рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ, рдпрджрд┐ рдЖрдк 5 рдХреЛрд░ рдХрд╛ рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ 50 рдпрд╛ 100 рдЦрд╛рддреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдВрддрд░ рдФрд░ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдЧрд╛ред


рдХреЛрдб 6: рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рдФрд░ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреА рдЧрддрд┐ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ
 #   library(ryandexdirect) library(foreach) library(doParallel) library(doSNOW) library(rbenchmark) #         for for_fun <- function(logins) { res1 <- data.frame() for (login in logins) { temp <- yadirGetKeyWords(Login = login) res1 <- rbind(res1, temp) } return(res1) } #         foreach   doSNOW dosnow_fun <- function(logins) { cl <- makeCluster(4) registerDoSNOW(cl) res2 <- data.frame() system.time({ res2 <- foreach(login=logins, .combine= 'rbind') %dopar% {temp <- ryandexdirect::yadirGetKeyWords(Login = login } }) stopCluster(cl) return(res2) } #         foreach   doParallel dopar_fun <- function(logins) { cl <- makeCluster(4) registerDoParallel(cl) res2 <- data.frame() system.time({ res2 <- foreach(login=logins, .combine= 'rbind') %dopar% {temp <- ryandexdirect::yadirGetKeyWords(Login = login) } }) stopCluster(cl) return(res2) } #          within(benchmark(for_cycle = for_fun(logins = logins), dosnow = dosnow_fun(logins = logins), doparallel = dopar_fun(logins = logins), replications = c(20), columns=c('test', 'replications', 'elapsed'), order=c('elapsed', 'test')), { average = elapsed/replications }) 

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб 5 рдХрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдордиреЗ рдХрд╛рдо рдХреА рдЧрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред


рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдордиреЗ рддреАрди рдХрд╛рд░реНрдп рдмрдирд╛рдП:


for_fun - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдХрдИ рдЦрд╛рддреЛрдВ рд╕реЗ рдХреАрд╡рд░реНрдб рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдЪрдХреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред


dosnow_fun - doSNOW рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рдХреАрд╡рд░реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рдиред


dopar_fun - doParallel package рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдореЛрдб рдореЗрдВ рдХреАрд╡рд░реНрдб рдХреА рд╕реВрдЪреА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдлрд╝рдВрдХреНрд╢рдиред


рдЕрдЧрд▓рд╛, рднреАрддрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рднреАрддрд░, рд╣рдо benchmark рдлрд╝рдВрдХреНрд╢рди рдХреЛ rbenchmark рдкреИрдХреЗрдЬ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ (for_cycle, dosnow, doparallel), рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╣рдо рдХреНрд░рдорд╢рдГ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ: for_fun(logins = logins) ; dosnow_fun(logins = logins) ; dopar_fun(logins = logins) ред


рдкреНрд░рддрд┐рдХреГрддрд┐ рддрд░реНрдХ рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЕрд░реНрдерд╛рддреНред рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рдЪрд▓рд╛рдПрдВрдЧреЗред


рдХреЙрд▓рдо рддрд░реНрдХ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдХреЙрд▓рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ 'рдкрд░реАрдХреНрд╖рдг', 'рдкреНрд░рддрд┐рдХреГрддрд┐', 'рдмреАрддрд╛' рдХрд╛ рдЕрд░реНрде рд╣реИ рдХреЙрд▓рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛: рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдХреБрд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордпред


рдЖрдк рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдХреЙрд▓рдо рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, ( { average = elapsed/replications } ), рдЕрд░реНрдерд╛рдд рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдФрд╕рдд рдХреЙрд▓рдо рд╣реЛрдЧрд╛ рдЬреЛ рдХреБрд▓ рд╕рдордп рдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдФрд╕рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред


рдЖрджреЗрд╢ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЫрд╛рдВрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред


рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдлреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдПрдкреАрдЖрдИ рдХреА рдЕрдкрдиреА рд╕реАрдорд╛рдПрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд░реВрдк рдореЗрдВ, рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдереНрд░реЗрдбреНрд╕ рдХреЗ рд╕рд╛рде, рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг Yandex.Direct API рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИ, рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ, рдПрдХ рд╕рд╛рде рднреЗрдЬреЗ рдЧрдП рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдореЗрдВ рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ Too Many Requests рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред


рдЗрд╕ рд▓реЗрдЦ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдпрд╣рд╛рдБ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

Source: https://habr.com/ru/post/hi437078/


All Articles