{"id":6703,"date":"2026-07-24T11:00:43","date_gmt":"2026-07-24T07:30:43","guid":{"rendered":"https:\/\/parmin.cloud\/blog\/?p=6703"},"modified":"2026-07-24T11:00:43","modified_gmt":"2026-07-24T07:30:43","slug":"%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-threadpoolexecutor-%d8%af%d8%b1-%d9%be%d8%a7%db%8c%d8%aa%d9%88%d9%86-%db%b3-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%85%d9%88%d8%a7","status":"publish","type":"post","link":"https:\/\/parmin.cloud\/blog\/%d8%a2%d9%85%d9%88%d8%b2%d8%b4-%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-threadpoolexecutor-%d8%af%d8%b1-%d9%be%d8%a7%db%8c%d8%aa%d9%88%d9%86-%db%b3-%d9%be%d8%b1%d8%af%d8%a7%d8%b2%d8%b4-%d9%85%d9%88%d8%a7\/","title":{"rendered":"\u0622\u0645\u0648\u0632\u0634 \u06a9\u0627\u0631 \u0628\u0627 ThreadPoolExecutor \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 (\u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a)"},"content":{"rendered":"<h3 data-path-to-node=\"5\">\u0645\u0642\u062f\u0645\u0647<\/h3>\n<p data-path-to-node=\"6\">\u0646\u062e\u200c\u0647\u0627 (Threads) \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc <b data-path-to-node=\"6\" data-index-in-node=\"46\">\u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc (Parallelism)<\/b> \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0686\u0646\u062f \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f. \u0627\u06af\u0631\u0686\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 (Multiprocessing) \u0646\u06cc\u0632 \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 Thread\u0647\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631\u06af\u06cc\u0631 <b data-path-to-node=\"6\" data-index-in-node=\"301\">\u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f\u06cc\/\u062e\u0631\u0648\u062c\u06cc (I\/O-Bound)<\/b> \u0647\u0633\u062a\u0646\u062f\u060c \u0639\u0627\u0644\u06cc \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f.<\/p>\n<p data-path-to-node=\"7\">\u0627\u0632 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u0628\u0627\u0631\u0632 \u0639\u0645\u0644\u06cc\u0627\u062a I\/O-Bound \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0648\u0628 (Web Requests) \u0648 \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0627\u0632 \u0641\u0627\u06cc\u0644 \u0627\u0634\u0627\u0631\u0647 \u06a9\u0631\u062f. \u0628\u0631\u0639\u06a9\u0633\u060c \u0639\u0645\u0644\u06cc\u0627\u062a \u0633\u0646\u06af\u06cc\u0646 \u067e\u0631\u062f\u0627\u0632\u0634\u06cc (CPU-Bound) \u0645\u062b\u0644 \u0645\u062d\u0627\u0633\u0628\u0627\u062a \u0631\u06cc\u0627\u0636\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647\u060c \u0633\u0648\u062f \u0686\u0646\u062f\u0627\u0646\u06cc \u0627\u0632 Thread\u0647\u0627 \u0646\u0645\u06cc\u200c\u0628\u0631\u0646\u062f (\u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0628\u0647 \u062f\u0644\u06cc\u0644 \u0648\u062c\u0648\u062f \u0642\u0641\u0644 \u062c\u0647\u0627\u0646\u06cc \u0645\u0641\u0633\u0631 \u06cc\u0627 GIL \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0627\u0633\u062a).<\/p>\n<p data-path-to-node=\"8\">\u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 \u0627\u0628\u0632\u0627\u0631 \u0642\u062f\u0631\u062a\u0645\u0646\u062f\u06cc \u0628\u0647 \u0646\u0627\u0645 <b data-path-to-node=\"8\" data-index-in-node=\"31\"><code data-path-to-node=\"8\" data-index-in-node=\"31\">ThreadPoolExecutor<\/code><\/b> \u062f\u0631 \u0645\u0627\u0698\u0648\u0644 <code data-path-to-node=\"8\" data-index-in-node=\"59\">concurrent.futures<\/code> \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f\u0647\u0627\u06cc \u0686\u0646\u062f\u200c\u0646\u062e\u06cc \u0631\u0627 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc\u200c\u0633\u0627\u0632\u062f.<\/p>\n<p data-path-to-node=\"9\">\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0627\u0632 \u0648\u0628\u0644\u0627\u06af <b data-path-to-node=\"9\" data-index-in-node=\"22\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/b>\u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code data-path-to-node=\"9\" data-index-in-node=\"49\">ThreadPoolExecutor<\/code> \u0633\u0631\u0639\u062a \u0627\u0631\u0633\u0627\u0644 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 \u0631\u0627 \u0628\u0647 \u0634\u06a9\u0644\u06cc \u0686\u0634\u0645\u200c\u06af\u06cc\u0631 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645.<\/p>\n<h3 data-path-to-node=\"11\">\u067e\u06cc\u0634\u200c\u0646\u06cc\u0627\u0632\u0647\u0627<\/h3>\n<ul data-path-to-node=\"12\">\n<li>\n<p data-path-to-node=\"12,0,0\">\u06cc\u06a9 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 (\u0645\u062b\u0644\u0627\u064b \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 \u0627\u0628\u0631\u06cc <b data-path-to-node=\"12,0,0\" data-index-in-node=\"51\">Ubuntu 24.04<\/b> \u062f\u0631 <b data-path-to-node=\"12,0,0\" data-index-in-node=\"67\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/b>).<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"12,1,0\">\u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 <code data-path-to-node=\"12,1,0\" data-index-in-node=\"13\">requests<\/code>.<\/p>\n<\/li>\n<\/ul>\n<blockquote data-path-to-node=\"13\">\n<p data-path-to-node=\"13,0\"><b data-path-to-node=\"13,0\" data-index-in-node=\"0\">\ud83d\udca1 \u0646\u06a9\u062a\u0647 \u0646\u0635\u0628 \u067e\u06a9\u06cc\u062c \u0628\u0627 \u0633\u0631\u0639\u062a \u0628\u0627\u0644\u0627:<\/b> \u0628\u0631\u0627\u06cc \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 <code data-path-to-node=\"13,0\" data-index-in-node=\"49\">requests<\/code> \u0648 \u062c\u0647\u062a \u062f\u0648\u0631 \u0632\u062f\u0646 \u062a\u062d\u0631\u06cc\u0645\u200c\u0647\u0627 \u0648 \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u062f\u0627\u0646\u0644\u0648\u062f \u0628\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 <b data-path-to-node=\"13,0\" data-index-in-node=\"136\">\u0645\u06cc\u0631\u0648\u0631 \u0627\u062e\u062a\u0635\u0627\u0635\u06cc PyPI \u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/b> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-346 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQlAI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-346\">\n<div class=\"animated-opacity ng-tns-c427156625-346\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-346 ng-star-inserted\"><span class=\"ng-tns-c427156625-346\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-346 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-346\"><code class=\"code-container formatted ng-tns-c427156625-346\" role=\"text\" data-test-id=\"code-content\">pip install --index-url https:\/\/pypi.parmincloud.ir\/simple\/ requests\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/blockquote>\n<h2 data-path-to-node=\"15\">\u06af\u0627\u0645 \u0627\u0648\u0644 \u2014 \u062a\u0639\u0631\u06cc\u0641 \u062a\u0627\u0628\u0639\u06cc \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627 \u062f\u0631 Thread\u0647\u0627<\/h2>\n<p data-path-to-node=\"16\">\u0627\u0628\u062a\u062f\u0627 \u062a\u0627\u0628\u0639\u06cc \u0645\u06cc\u200c\u0646\u0648\u06cc\u0633\u06cc\u0645 \u06a9\u0647 \u0648\u062c\u0648\u062f \u06cc\u0627 \u0639\u062f\u0645 \u0648\u062c\u0648\u062f \u06cc\u06a9 \u0635\u0641\u062d\u0647 \u062f\u0631 \u0648\u06cc\u06a9\u06cc\u200c\u067e\u062f\u06cc\u0627 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0634\u0627\u0645\u0644 \u0627\u0631\u0633\u0627\u0644 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0634\u0628\u06a9\u0647\u200c\u0627\u06cc (\u0639\u0645\u0644\u06cc\u0627\u062a I\/O-Bound) \u0627\u0633\u062a.<\/p>\n<p data-path-to-node=\"17\">\u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0647 \u0646\u0627\u0645 <code data-path-to-node=\"17\" data-index-in-node=\"15\">wiki_page_function.py<\/code> \u0628\u0633\u0627\u0632\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-347 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQlQI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-347\">\n<div class=\"animated-opacity ng-tns-c427156625-347\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-347 ng-star-inserted\"><span class=\"ng-tns-c427156625-347\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-347 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-347\"><code class=\"code-container formatted ng-tns-c427156625-347\" role=\"text\" data-test-id=\"code-content\">nano wiki_page_function.py\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"19\">\u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062f\u0631\u0648\u0646 \u0622\u0646 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-348 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQlgI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-348\">\n<div class=\"animated-opacity ng-tns-c427156625-348\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-348 ng-star-inserted\"><span class=\"ng-tns-c427156625-348\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-348 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-348\"><code class=\"code-container formatted ng-tns-c427156625-348\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> requests\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_wiki_page_existence<\/span>(<span class=\"hljs-params\">wiki_page_url, timeout=<span class=\"hljs-number\">10<\/span><\/span>):<\/span>\r\n    response = requests.get(url=wiki_page_url, timeout=timeout)\r\n\r\n    page_status = <span class=\"hljs-string\">\"unknown\"<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> response.status_code == <span class=\"hljs-number\">200<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"exists\"<\/span>\r\n    <span class=\"hljs-keyword\">elif<\/span> response.status_code == <span class=\"hljs-number\">404<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"does not exist\"<\/span>\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> wiki_page_url + <span class=\"hljs-string\">\" - \"<\/span> + page_status\r\n\r\n<span class=\"hljs-comment\"># \u062a\u0633\u062a \u062a\u0627\u0628\u0639 \u0628\u0627 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0645\u0634\u062e\u0635<\/span>\r\nurl = <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Ocean\"<\/span>\r\nprint(get_wiki_page_existence(wiki_page_url=url))\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"21\">\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-349 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQlwI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-349\">\n<div class=\"animated-opacity ng-tns-c427156625-349\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-349 ng-star-inserted\"><span class=\"ng-tns-c427156625-349\">Bash<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-349 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-349\"><code class=\"code-container formatted ng-tns-c427156625-349\" role=\"text\" data-test-id=\"code-content\">python3 wiki_page_function.py\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"23\">\u062e\u0631\u0648\u062c\u06cc \u0632\u06cc\u0631 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f \u06a9\u0647 \u0635\u0641\u062d\u0647 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-350 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQmAI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-350\">\n<div class=\"animated-opacity ng-tns-c427156625-350\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-350 ng-star-inserted\"><span class=\"ng-tns-c427156625-350\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-350 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-350\"><code class=\"code-container formatted ng-tns-c427156625-350\" role=\"text\" data-test-id=\"code-content\">https:\/\/en.wikipedia.org\/wiki\/Ocean - exists\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<blockquote data-path-to-node=\"25\">\n<p data-path-to-node=\"25,0\"><b data-path-to-node=\"25,0\" data-index-in-node=\"0\">\u0647\u0634\u062f\u0627\u0631 \u0645\u0647\u0645 \u062f\u0631\u0628\u0627\u0631\u0647 \u0647\u0645\u200c\u0631\u0648\u0646\u062f\u06cc:<\/b> \u0628\u0647\u200c\u0637\u0648\u0631 \u06a9\u0644\u06cc\u060c \u0628\u0647\u200c\u0627\u0634\u062a\u0631\u0627\u06a9\u200c\u06af\u0630\u0627\u0631\u06cc \u0627\u0634\u06cc\u0627\u0621 \u06cc\u0627 \u0645\u062a\u063a\u06cc\u0631\u0647\u0627 \u0628\u06cc\u0646 Thread\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641 \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u062f\u0648\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0647\u0645\u200c\u0632\u0645\u0627\u0646\u06cc \u062e\u0637\u0631\u0633\u0627\u0632 \u0627\u0633\u062a. \u062a\u0627\u0628\u0639\u06cc \u0645\u0627\u0646\u0646\u062f <code data-path-to-node=\"25,0\" data-index-in-node=\"146\">get_wiki_page_existence<\/code> \u06a9\u0647 \u06cc\u06a9 \u06a9\u0627\u0631 \u0627\u06cc\u0632\u0648\u0644\u0647 \u0627\u0646\u062c\u0627\u0645 \u062f\u0627\u062f\u0647 \u0648 \u0628\u0627 Thread\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0645\u062a\u063a\u06cc\u0631 \u0645\u0634\u062a\u0631\u06a9\u06cc \u0646\u062f\u0627\u0631\u062f\u060c \u0628\u0647\u062a\u0631\u06cc\u0646 \u06af\u0632\u06cc\u0646\u0647 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0686\u0646\u062f\u200c\u0646\u062e\u06cc \u0627\u0633\u062a.<\/p>\n<\/blockquote>\n<h2 data-path-to-node=\"27\">\u06af\u0627\u0645 \u062f\u0648\u0645 \u2014 \u0627\u062c\u0631\u0627\u06cc \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u062a\u0627\u0628\u0639 \u0628\u0627 ThreadPoolExecutor<\/h2>\n<p data-path-to-node=\"28\">\u062d\u0627\u0644\u0627 \u06a9\u0647 \u062a\u0627\u0628\u0639 \u062e\u0648\u062f \u0631\u0627 \u0622\u0645\u0627\u062f\u0647 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645\u060c \u0627\u0632 <code data-path-to-node=\"28\" data-index-in-node=\"39\">ThreadPoolExecutor<\/code> \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0686\u0646\u062f\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0648\u0628 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0648 \u0645\u0648\u0627\u0632\u06cc \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p data-path-to-node=\"29\">\u0641\u0627\u06cc\u0644 <code data-path-to-node=\"29\" data-index-in-node=\"5\">wiki_page_function.py<\/code> \u0631\u0627 \u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0647 \u0648 \u06a9\u062f\u0647\u0627\u06cc \u0632\u06cc\u0631 \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-351 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQmQI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-351\">\n<div class=\"animated-opacity ng-tns-c427156625-351\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-351 ng-star-inserted\"><span class=\"ng-tns-c427156625-351\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-351 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-351\"><code class=\"code-container formatted ng-tns-c427156625-351\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> requests\r\n<span class=\"hljs-keyword\">import<\/span> concurrent.futures\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_wiki_page_existence<\/span>(<span class=\"hljs-params\">wiki_page_url, timeout=<span class=\"hljs-number\">10<\/span><\/span>):<\/span>\r\n    response = requests.get(url=wiki_page_url, timeout=timeout)\r\n\r\n    page_status = <span class=\"hljs-string\">\"unknown\"<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> response.status_code == <span class=\"hljs-number\">200<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"exists\"<\/span>\r\n    <span class=\"hljs-keyword\">elif<\/span> response.status_code == <span class=\"hljs-number\">404<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"does not exist\"<\/span>\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> wiki_page_url + <span class=\"hljs-string\">\" - \"<\/span> + page_status\r\n\r\n<span class=\"hljs-comment\"># \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u0622\u062f\u0631\u0633\u200c\u0647\u0627\u06cc \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc<\/span>\r\nwiki_page_urls = [\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Ocean\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Island\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/this_page_does_not_exist\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Shark\"<\/span>,\r\n]\r\n\r\n<span class=\"hljs-comment\"># \u0633\u0627\u062e\u062a Executor \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0646\u062e\u200c\u0647\u0627<\/span>\r\n<span class=\"hljs-keyword\">with<\/span> concurrent.futures.ThreadPoolExecutor() <span class=\"hljs-keyword\">as<\/span> executor:\r\n    futures = []\r\n    <span class=\"hljs-keyword\">for<\/span> url <span class=\"hljs-keyword\">in<\/span> wiki_page_urls:\r\n        futures.append(executor.submit(get_wiki_page_existence, wiki_page_url=url))\r\n    \r\n    <span class=\"hljs-comment\"># \u062f\u0631\u06cc\u0627\u0641\u062a \u0646\u062a\u0627\u06cc\u062c \u0628\u0647 \u0645\u062d\u0636 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646 \u0647\u0631 \u0646\u062e<\/span>\r\n    <span class=\"hljs-keyword\">for<\/span> future <span class=\"hljs-keyword\">in<\/span> concurrent.futures.as_completed(futures):\r\n        print(future.result())\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"31\"><b data-path-to-node=\"31\" data-index-in-node=\"0\">\u06a9\u062f \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u061f<\/b><\/p>\n<ol start=\"1\" data-path-to-node=\"32\">\n<li>\n<p data-path-to-node=\"32,0,0\">\u0645\u0627\u0698\u0648\u0644 <code data-path-to-node=\"32,0,0\" data-index-in-node=\"6\">concurrent.futures<\/code> \u0627\u0628\u0632\u0627\u0631 <code data-path-to-node=\"32,0,0\" data-index-in-node=\"31\">ThreadPoolExecutor<\/code> \u0631\u0627 \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"32,1,0\">\u0639\u0628\u0627\u0631\u062a <code data-path-to-node=\"32,1,0\" data-index-in-node=\"6\">with<\/code> \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 \u0627\u0632 Executor \u0645\u06cc\u200c\u0633\u0627\u0632\u062f \u06a9\u0647 \u067e\u0633 \u0627\u0632 \u0627\u062a\u0645\u0627\u0645 \u06a9\u0627\u0631\u060c Thread\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0633\u062a\u0647\u200c\u0628\u0646\u062f\u06cc \u0648 \u0622\u0632\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"32,2,0\">\u0645\u062a\u062f <code data-path-to-node=\"32,2,0\" data-index-in-node=\"4\">executor.submit()<\/code> \u06a9\u0627\u0631 \u0628\u0631\u0631\u0633\u06cc \u0647\u0631 URL \u0631\u0627 \u0628\u0647 \u06cc\u06a9 Thread \u0645\u0633\u062a\u0642\u0644 \u0645\u06cc\u200c\u0633\u067e\u0627\u0631\u062f \u0648 \u06cc\u06a9 \u0634\u06cc\u0621 <code data-path-to-node=\"32,2,0\" data-index-in-node=\"79\">Future<\/code> \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<\/li>\n<li>\n<p data-path-to-node=\"32,3,0\">\u062a\u0627\u0628\u0639 <code data-path-to-node=\"32,3,0\" data-index-in-node=\"5\">as_completed()<\/code> \u0646\u062a\u0627\u06cc\u062c \u0631\u0627 <b data-path-to-node=\"32,3,0\" data-index-in-node=\"29\">\u0628\u0647 \u0645\u062d\u0636 \u0622\u0645\u0627\u062f\u0647 \u0634\u062f\u0646<\/b> (\u0628\u062f\u0648\u0646 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062a\u0631\u062a\u06cc\u0628 \u0627\u0631\u0633\u0627\u0644) \u0628\u0631\u0645\u06cc\u200c\u06af\u0631\u062f\u0627\u0646\u062f.<\/p>\n<\/li>\n<\/ol>\n<p data-path-to-node=\"33\">\u0628\u0627 \u0627\u062c\u0631\u0627\u06cc \u0645\u062c\u062f\u062f \u06a9\u062f\u060c \u062e\u0631\u0648\u062c\u06cc \u0645\u0634\u0627\u0628\u0647 \u0632\u06cc\u0631 \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-352 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQmgI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-352\">\n<div class=\"animated-opacity ng-tns-c427156625-352\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-352 ng-star-inserted\"><span class=\"ng-tns-c427156625-352\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-352 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-352\"><code class=\"code-container formatted ng-tns-c427156625-352\" role=\"text\" data-test-id=\"code-content\">https:\/\/en.wikipedia.org\/wiki\/Island - exists\r\nhttps:\/\/en.wikipedia.org\/wiki\/Ocean - exists\r\nhttps:\/\/en.wikipedia.org\/wiki\/this_page_does_not_exist - does not exist\r\nhttps:\/\/en.wikipedia.org\/wiki\/Shark - exists\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<h2 data-path-to-node=\"36\">\u06af\u0627\u0645 \u0633\u0648\u0645 \u2014 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062e\u0637\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 Thread \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u0646\u062f<\/h2>\n<p data-path-to-node=\"37\">\u0627\u06af\u0631 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627\u06cc \u06cc\u06a9 Thread \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0647\u062f (\u0645\u062b\u0644\u0627\u064b Time-out \u0634\u0628\u06a9\u0647)\u060c <code data-path-to-node=\"37\" data-index-in-node=\"64\">ThreadPoolExecutor<\/code> \u0627\u06cc\u0646 \u0627\u0633\u062a\u062b\u0646\u0627 (Exception) \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f \u0648 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0645\u062a\u062f <code data-path-to-node=\"37\" data-index-in-node=\"137\">future.result()<\/code> \u0631\u0627 \u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u062f\u060c \u0622\u0646 \u0631\u0627 \u0631\u062e \u0645\u06cc\u200c\u062f\u0647\u062f.<\/p>\n<p data-path-to-node=\"38\">\u0628\u0631\u0627\u06cc \u062a\u0633\u062a \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639\u060c \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 <code data-path-to-node=\"38\" data-index-in-node=\"46\">0.00001<\/code> \u062b\u0627\u0646\u06cc\u0647 \u06a9\u0627\u0647\u0634 \u0645\u06cc\u200c\u062f\u0647\u06cc\u0645 \u062a\u0627 \u062e\u0637\u0627 \u0631\u062e \u062f\u0647\u062f:<\/p>\n<div class=\"code-block ng-tns-c427156625-353 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQmwI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-353\">\n<div class=\"animated-opacity ng-tns-c427156625-353\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-353 ng-star-inserted\"><span class=\"ng-tns-c427156625-353\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-353 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-353\"><code class=\"code-container formatted ng-tns-c427156625-353\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> requests\r\n<span class=\"hljs-keyword\">import<\/span> concurrent.futures\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_wiki_page_existence<\/span>(<span class=\"hljs-params\">wiki_page_url, timeout=<span class=\"hljs-number\">10<\/span><\/span>):<\/span>\r\n    response = requests.get(url=wiki_page_url, timeout=timeout)\r\n\r\n    page_status = <span class=\"hljs-string\">\"unknown\"<\/span>\r\n    <span class=\"hljs-keyword\">if<\/span> response.status_code == <span class=\"hljs-number\">200<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"exists\"<\/span>\r\n    <span class=\"hljs-keyword\">elif<\/span> response.status_code == <span class=\"hljs-number\">404<\/span>:\r\n        page_status = <span class=\"hljs-string\">\"does not exist\"<\/span>\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> wiki_page_url + <span class=\"hljs-string\">\" - \"<\/span> + page_status\r\n\r\nwiki_page_urls = [\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Ocean\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Island\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/this_page_does_not_exist\"<\/span>,\r\n    <span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/Shark\"<\/span>,\r\n]\r\n\r\n<span class=\"hljs-keyword\">with<\/span> concurrent.futures.ThreadPoolExecutor() <span class=\"hljs-keyword\">as<\/span> executor:\r\n    futures = []\r\n    <span class=\"hljs-keyword\">for<\/span> url <span class=\"hljs-keyword\">in<\/span> wiki_page_urls:\r\n        futures.append(\r\n            executor.submit(\r\n                get_wiki_page_existence, wiki_page_url=url, timeout=<span class=\"hljs-number\">0.00001<\/span>\r\n            )\r\n        )\r\n    <span class=\"hljs-keyword\">for<\/span> future <span class=\"hljs-keyword\">in<\/span> concurrent.futures.as_completed(futures):\r\n        <span class=\"hljs-keyword\">try<\/span>:\r\n            print(future.result())\r\n        <span class=\"hljs-keyword\">except<\/span> requests.ConnectTimeout:\r\n            print(<span class=\"hljs-string\">\"\u062e\u0637\u0627\u06cc \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a: \u0632\u0645\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\"<\/span>)\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"40\"><b data-path-to-node=\"40\" data-index-in-node=\"0\">\u062e\u0631\u0648\u062c\u06cc:<\/b><\/p>\n<div class=\"code-block ng-tns-c427156625-354 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQnAI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-354\">\n<div class=\"animated-opacity ng-tns-c427156625-354\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-354 ng-star-inserted\"><span class=\"ng-tns-c427156625-354\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-354 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-354\"><code class=\"code-container formatted ng-tns-c427156625-354\" role=\"text\" data-test-id=\"code-content\">\u062e\u0637\u0627\u06cc \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a: \u0632\u0645\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\r\n\u062e\u0637\u0627\u06cc \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a: \u0632\u0645\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\r\n\u062e\u0637\u0627\u06cc \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a: \u0632\u0645\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\r\n\u062e\u0637\u0627\u06cc \u062a\u0627\u06cc\u0645\u200c\u0622\u0648\u062a: \u0632\u0645\u0627\u0646 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f.\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"42\">\u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0628\u0627 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 <code data-path-to-node=\"42\" data-index-in-node=\"27\">future.result()<\/code> \u062f\u0631\u0648\u0646 \u0628\u0644\u0648\u06a9 <code data-path-to-node=\"42\" data-index-in-node=\"53\">try\/except<\/code> \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u062e\u0637\u0627\u0647\u0627\u06cc \u0631\u062e \u062f\u0627\u062f\u0647 \u062f\u0631\u0648\u0646 Thread\u0647\u0627 \u0631\u0627 \u0628\u0647\u200c\u0631\u0627\u062d\u062a\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<h2 data-path-to-node=\"44\">\u06af\u0627\u0645 \u0686\u0647\u0627\u0631\u0645 \u2014 \u0645\u0642\u0627\u06cc\u0633\u0647 \u0633\u0631\u0639\u062a \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 \u0648 \u0628\u062f\u0648\u0646 Thread<\/h2>\n<p data-path-to-node=\"45\">\u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u0645\u06cc\u0632\u0627\u0646 \u062a\u0627\u062b\u06cc\u0631 <code data-path-to-node=\"45\" data-index-in-node=\"21\">ThreadPoolExecutor<\/code> \u062f\u0631 \u0633\u0631\u0639\u062a \u0627\u062c\u0631\u0627\u060c \u06f5\u06f0 \u0622\u062f\u0631\u0633 \u0645\u062e\u062a\u0644\u0641 \u0627\u0632 \u0648\u06cc\u06a9\u06cc\u200c\u067e\u062f\u06cc\u0627 \u0631\u0627 \u06cc\u06a9\u200c\u0628\u0627\u0631 \u0628\u0647 \u0635\u0648\u0631\u062a \u062a\u06a9\u200c\u0646\u062e\u06cc (\u0645\u0639\u0645\u0648\u0644\u06cc) \u0648 \u06cc\u06a9\u200c\u0628\u0627\u0631 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Thread\u0647\u0627 \u0627\u062c\u0631\u0627 \u0648 \u0632\u0645\u0627\u0646 \u0631\u0627 \u0627\u0646\u062f\u0627\u0632\u0647\u200c\u06af\u06cc\u0631\u06cc \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645.<\/p>\n<h3 data-path-to-node=\"46\">\u0627\u0644\u0641) \u0627\u062c\u0631\u0627\u06cc \u0628\u062f\u0648\u0646 Thread (\u062a\u06a9\u200c\u0646\u062e\u06cc):<\/h3>\n<div class=\"code-block ng-tns-c427156625-355 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQnQI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-355\">\n<div class=\"animated-opacity ng-tns-c427156625-355\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-355 ng-star-inserted\"><span class=\"ng-tns-c427156625-355\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-355 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-355\"><code class=\"code-container formatted ng-tns-c427156625-355\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> time\r\n<span class=\"hljs-keyword\">import<\/span> requests\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_wiki_page_existence<\/span>(<span class=\"hljs-params\">wiki_page_url, timeout=<span class=\"hljs-number\">10<\/span><\/span>):<\/span>\r\n    response = requests.get(url=wiki_page_url, timeout=timeout)\r\n    page_status = <span class=\"hljs-string\">\"exists\"<\/span> <span class=\"hljs-keyword\">if<\/span> response.status_code == <span class=\"hljs-number\">200<\/span> <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">\"does not exist\"<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> wiki_page_url + <span class=\"hljs-string\">\" - \"<\/span> + page_status\r\n\r\nwiki_page_urls = [<span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/\"<\/span> + <span class=\"hljs-built_in\">str<\/span>(i) <span class=\"hljs-keyword\">for<\/span> i <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">range<\/span>(<span class=\"hljs-number\">50<\/span>)]\r\n\r\nprint(<span class=\"hljs-string\">\"\u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 Thread:\"<\/span>)\r\nstart_time = time.time()\r\n\r\n<span class=\"hljs-keyword\">for<\/span> url <span class=\"hljs-keyword\">in<\/span> wiki_page_urls:\r\n    print(get_wiki_page_existence(wiki_page_url=url))\r\n\r\nprint(<span class=\"hljs-string\">\"\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u062f\u0648\u0646 Thread:\"<\/span>, time.time() - start_time)\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"48\"><b data-path-to-node=\"48\" data-index-in-node=\"0\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0645\u0648\u0646\u0647:<\/b><\/p>\n<div class=\"code-block ng-tns-c427156625-356 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQngI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-356\">\n<div class=\"animated-opacity ng-tns-c427156625-356\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-356 ng-star-inserted\"><span class=\"ng-tns-c427156625-356\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-356 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-356\"><code class=\"code-container formatted ng-tns-c427156625-356\" role=\"text\" data-test-id=\"code-content\">Without threads time: 5.803015232086182\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"50\"><i data-path-to-node=\"50\" data-index-in-node=\"0\">(\u0628\u0631\u0631\u0633\u06cc \u06f5\u06f0 \u0644\u06cc\u0646\u06a9 \u062d\u062f\u0648\u062f \u06f5\u066b\u06f8 \u062b\u0627\u0646\u06cc\u0647 \u0637\u0648\u0644 \u06a9\u0634\u06cc\u062f).<\/i><\/p>\n<h3 data-path-to-node=\"52\">\u0628) \u0627\u062c\u0631\u0627\u06cc \u0628\u0627 ThreadPoolExecutor (\u0686\u0646\u062f\u200c\u0646\u062e\u06cc):<\/h3>\n<div class=\"code-block ng-tns-c427156625-357 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQnwI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-357\">\n<div class=\"animated-opacity ng-tns-c427156625-357\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-357 ng-star-inserted\"><span class=\"ng-tns-c427156625-357\">Python<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-357 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-357\"><code class=\"code-container formatted ng-tns-c427156625-357\" role=\"text\" data-test-id=\"code-content\"><span class=\"hljs-keyword\">import<\/span> time\r\n<span class=\"hljs-keyword\">import<\/span> requests\r\n<span class=\"hljs-keyword\">import<\/span> concurrent.futures\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">def<\/span> <span class=\"hljs-title\">get_wiki_page_existence<\/span>(<span class=\"hljs-params\">wiki_page_url, timeout=<span class=\"hljs-number\">10<\/span><\/span>):<\/span>\r\n    response = requests.get(url=wiki_page_url, timeout=timeout)\r\n    page_status = <span class=\"hljs-string\">\"exists\"<\/span> <span class=\"hljs-keyword\">if<\/span> response.status_code == <span class=\"hljs-number\">200<\/span> <span class=\"hljs-keyword\">else<\/span> <span class=\"hljs-string\">\"does not exist\"<\/span>\r\n    <span class=\"hljs-keyword\">return<\/span> wiki_page_url + <span class=\"hljs-string\">\" - \"<\/span> + page_status\r\n\r\nwiki_page_urls = [<span class=\"hljs-string\">\"https:\/\/en.wikipedia.org\/wiki\/\"<\/span> + <span class=\"hljs-built_in\">str<\/span>(i) <span class=\"hljs-keyword\">for<\/span> i <span class=\"hljs-keyword\">in<\/span> <span class=\"hljs-built_in\">range<\/span>(<span class=\"hljs-number\">50<\/span>)]\r\n\r\nprint(<span class=\"hljs-string\">\"\u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627 ThreadPoolExecutor:\"<\/span>)\r\nstart_time = time.time()\r\n\r\n<span class=\"hljs-keyword\">with<\/span> concurrent.futures.ThreadPoolExecutor() <span class=\"hljs-keyword\">as<\/span> executor:\r\n    futures = [executor.submit(get_wiki_page_existence, wiki_page_url=url) <span class=\"hljs-keyword\">for<\/span> url <span class=\"hljs-keyword\">in<\/span> wiki_page_urls]\r\n    <span class=\"hljs-keyword\">for<\/span> future <span class=\"hljs-keyword\">in<\/span> concurrent.futures.as_completed(futures):\r\n        print(future.result())\r\n\r\nprint(<span class=\"hljs-string\">\"\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0628\u0627 Thread:\"<\/span>, time.time() - start_time)\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"54\"><b data-path-to-node=\"54\" data-index-in-node=\"0\">\u062e\u0631\u0648\u062c\u06cc \u0646\u0645\u0648\u0646\u0647:<\/b><\/p>\n<div class=\"code-block ng-tns-c427156625-358 ng-animate-disabled ng-trigger ng-trigger-codeBlockRevealAnimation\" data-hveid=\"0\" data-ved=\"0CAAQhtANahgKEwjh1KK2seiVAxUAAAAAHQAAAAAQoAI\">\n<div class=\"formatted-code-block-internal-container ng-tns-c427156625-358\">\n<div class=\"animated-opacity ng-tns-c427156625-358\">\n<div class=\"code-block-decoration header-formatted gds-emphasized-body-m ng-tns-c427156625-358 ng-star-inserted\"><span class=\"ng-tns-c427156625-358\">Plaintext<\/span><\/p>\n<div class=\"buttons ng-tns-c427156625-358 ng-star-inserted\"><\/div>\n<\/div>\n<pre class=\"ng-tns-c427156625-358\"><code class=\"code-container formatted ng-tns-c427156625-358\" role=\"text\" data-test-id=\"code-content\">Threaded time: 1.2201685905456543\r\n<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<p data-path-to-node=\"56\">\u0647\u0645\u0627\u0646\u200c\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc\u200c\u0628\u06cc\u0646\u06cc\u062f\u060c \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0627\u0632 <b data-path-to-node=\"56\" data-index-in-node=\"35\">\u06f5\u066b\u06f8 \u062b\u0627\u0646\u06cc\u0647<\/b> \u0628\u0647 <b data-path-to-node=\"56\" data-index-in-node=\"48\">\u06f1\u066b\u06f2 \u062b\u0627\u0646\u06cc\u0647<\/b> \u06a9\u0627\u0647\u0634 \u06cc\u0627\u0641\u062a! \u0627\u06cc\u0646 \u06cc\u0639\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0632\u062f\u06cc\u06a9 \u0628\u0647 <b data-path-to-node=\"56\" data-index-in-node=\"94\">\u06f5 \u0628\u0631\u0627\u0628\u0631 \u0633\u0631\u06cc\u0639\u200c\u062a\u0631<\/b> \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0627\u0633\u062a.<\/p>\n<h3 data-path-to-node=\"58\">\u062c\u0645\u0639\u200c\u0628\u0646\u062f\u06cc<\/h3>\n<p data-path-to-node=\"59\">\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code data-path-to-node=\"59\" data-index-in-node=\"11\">ThreadPoolExecutor<\/code> \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u06f3 \u06cc\u06a9\u06cc \u0627\u0632 \u0633\u0627\u062f\u0647\u200c\u062a\u0631\u06cc\u0646 \u0648 \u0645\u0624\u062b\u0631\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0647\u06cc\u0646\u0647\u200c\u0633\u0627\u0632\u06cc \u06a9\u062f\u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0627 \u0634\u0628\u06a9\u0647\u060c \u067e\u0627\u06cc\u06af\u0627\u0647\u200c\u062f\u0627\u062f\u0647 \u06cc\u0627 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 (\u0639\u0645\u0644\u06cc\u0627\u062a I\/O) \u0633\u0631\u06a9\u0627\u0631 \u062f\u0627\u0631\u0646\u062f. \u0634\u0645\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u0628\u0632\u0627\u0631 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u0646 \u062f\u0631\u06af\u06cc\u0631 \u0634\u062f\u0646 \u0628\u0627 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc\u200c\u0647\u0627\u06cc \u062f\u0633\u062a\u06cc \u0633\u0627\u062e\u062a \u0646\u062e\u200c\u0647\u0627\u060c \u06a9\u0627\u0631\u0627\u06cc\u06cc \u06a9\u062f\u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631\u0647\u0627\u06cc \u0627\u0628\u0631\u06cc \u0628\u0647\u200c\u0637\u0648\u0631 \u0634\u06af\u0641\u062a\u200c\u0627\u0646\u06af\u06cc\u0632\u06cc \u0627\u0631\u062a\u0642\u0627 \u062f\u0647\u06cc\u062f.<\/p>\n<p data-path-to-node=\"59\">\n<p data-path-to-node=\"59\">\n<p data-path-to-node=\"59\">\n<p data-path-to-node=\"59\">\u0627\u0632 \u0647\u0645\u0631\u0627\u0647\u06cc \u0634\u0645\u0627 \u0628\u0627 <strong><a href=\"https:\/\/parmin.cloud\/\">\u067e\u0627\u0631\u0645\u06cc\u0646 \u06a9\u0644\u0648\u062f<\/a><\/strong> \u0633\u067e\u0627\u0633\u06af\u0632\u0627\u0631\u06cc\u0645.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0645\u0642\u062f\u0645\u0647 \u0646\u062e\u200c\u0647\u0627 (Threads) \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u0627\u0635\u0644\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc (Parallelism) \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc\u200c\u062f\u0647\u0646\u062f \u0686\u0646\u062f \u0639\u0645\u0644\u06cc\u0627\u062a \u0631\u0627 \u0628\u0647\u200c\u0635\u0648\u0631\u062a \u0647\u0645\u200c\u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u06a9\u0646\u062f. \u0627\u06af\u0631\u0686\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0648\u0627\u0632\u06cc \u062f\u0631 \u067e\u0627\u06cc\u062a\u0648\u0646 \u0628\u0627 \u0641\u0631\u0622\u06cc\u0646\u062f\u0647\u0627\u06cc \u0686\u0646\u062f\u06af\u0627\u0646\u0647 (Multiprocessing) \u0646\u06cc\u0632 \u0627\u0645\u06a9\u0627\u0646\u200c\u067e\u0630\u06cc\u0631 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 Thread\u0647\u0627 \u0628\u0647\u200c\u0637\u0648\u0631 \u0648\u06cc\u0698\u0647 \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0631\u0639\u062a \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631\u06af\u06cc\u0631 \u0639\u0645\u0644\u06cc\u0627\u062a \u0648\u0631\u0648\u062f\u06cc\/\u062e\u0631\u0648\u062c\u06cc (I\/O-Bound) \u0647\u0633\u062a\u0646\u062f\u060c \u0639\u0627\u0644\u06cc \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f. &hellip;<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,343],"tags":[],"class_list":["post-6703","post","type-post","status-publish","format-standard","hentry","category-8","category-python"],"_links":{"self":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/comments?post=6703"}],"version-history":[{"count":0,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/posts\/6703\/revisions"}],"wp:attachment":[{"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/media?parent=6703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/categories?post=6703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/parmin.cloud\/blog\/wp-json\/wp\/v2\/tags?post=6703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}