{"id":46806,"date":"2020-06-17T15:33:28","date_gmt":"2020-06-17T07:33:28","guid":{"rendered":"http:\/\/www.xyryd.com\/?p=46806"},"modified":"2020-06-17T15:33:29","modified_gmt":"2020-06-17T07:33:29","slug":"python%e4%b8%ad%e7%9a%84%e7%ba%bf%e7%a8%8b%e4%b9%8bsemaphore%e6%8e%a7%e5%88%b6%e6%af%8f%e6%ac%a1%e4%bf%a1%e5%8f%b7%e9%87%8f","status":"publish","type":"post","link":"http:\/\/www.xyryd.com\/46806.html","title":{"rendered":"python\u4e2d\u7684\u7ebf\u7a0b\u4e4bsemaphore\u63a7\u5236\u6bcf\u6b21\u4fe1\u53f7\u91cf"},"content":{"rendered":"\n

semaphore<\/strong>\u662f\u4e00\u4e2a\u5185\u7f6e\u7684\u8ba1\u6570\u5668<\/p>\n\n\n\n

\u6bcf\u5f53\u8c03\u7528acquire()\u65f6\uff0c\u5185\u7f6e\u8ba1\u6570\u5668-1\n\u6bcf\u5f53\u8c03\u7528release()\u65f6\uff0c\u5185\u7f6e\u8ba1\u6570\u5668+1<\/code><\/pre>\n\n\n\n

\u8ba1\u6570\u5668\u4e0d\u80fd\u5c0f\u4e8e0<\/strong>\uff0c\u5f53\u8ba1\u6570\u5668\u4e3a0<\/strong>\u65f6\uff0cacquire()<\/strong>\u5c06\u963b\u585e\u7ebf\u7a0b\u76f4\u5230\u5176\u4ed6\u7ebf\u7a0b\u8c03\u7528release()<\/strong>\u3002
\u6765\u770b\u4e0b\u9762\u7684\u4ee3\u7801\uff1a<\/p>\n\n\n\n

import time\nimport threading\n\ndef foo():\n\ttime.sleep(2)\t#\u7a0b\u5e8f\u4f11\u606f2\u79d2\n\tprint(\"ok\",time.ctime())\n\nfor i in range(20):\n\tt1=threading.Thread(target=foo,args=())\t#\u5b9e\u4f8b\u5316\u4e00\u4e2a\u7ebf\u7a0b\n\tt1.start()\t#\u542f\u52a8\u7ebf\u7a0b\n<\/code><\/pre>\n\n\n\n

\u6267\u884c\u7ed3\u679c\uff1a<\/p>\n\n\n\n

ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017
ok Tue Jul 18 20:05:58 2017<\/p>\n\n\n\n

\u53ef\u4ee5\u770b\u5230\uff0c\u7a0b\u5e8f\u4f1a\u5728\u5f88\u77ed\u7684\u65f6\u95f4\u5185\u751f\u621020\u4e2a\u7ebf\u7a0b\u6765\u6253\u5370\u4e00\u53e5\u8bdd\u3002<\/p>\n\n\n\n

\u5982\u679c\u5728\u4e3b\u673a\u6267\u884cIO\u5bc6\u96c6\u578b\u4efb\u52a1<\/strong>\u7684\u65f6\u5019\u518d\u6267\u884c\u8fd9\u79cd\u7c7b\u578b\u7684\u7a0b\u5e8f\u65f6\uff0c\u8ba1\u7b97\u673a\u5c31\u6709\u5f88\u5927\u53ef\u80fd\u4f1a\u5b95\u673a\u3002
\u8fd9\u65f6\u5019\u5c31\u53ef\u4ee5\u4e3a\u8fd9\u6bb5\u7a0b\u5e8f\u6dfb\u52a0\u4e00\u4e2a\u8ba1\u6570\u5668\u529f\u80fd\uff0c\u6765\u9650\u5236\u4e00\u4e2a\u65f6\u95f4\u70b9\u5185\u7684\u7ebf\u7a0b\u6570\u91cf\u3002<\/p>\n\n\n\n

\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n\n\n\n

import time\nimport threading\n\ns1=threading.Semaphore(5)\t#\u6dfb\u52a0\u4e00\u4e2a\u8ba1\u6570\u5668\n\ndef foo():\n\ts1.acquire()\t#\u8ba1\u6570\u5668\u83b7\u5f97\u9501\n\ttime.sleep(2)\t#\u7a0b\u5e8f\u4f11\u77202\u79d2\n\tprint(\"ok\",time.ctime())\n\ts1.release()\t#\u8ba1\u6570\u5668\u91ca\u653e\u9501\n\n\nfor i in range(20):\n\tt1=threading.Thread(target=foo,args=())\t#\u521b\u5efa\u7ebf\u7a0b\n\tt1.start()\t#\u542f\u52a8\u7ebf\u7a0b\t\n<\/code><\/pre>\n\n\n\n

\u6267\u884c\u7ed3\u679c\uff1a<\/p>\n\n\n\n

ok Tue Jul 18 20:04:38 2017
ok Tue Jul 18 20:04:38 2017
ok Tue Jul 18 20:04:38 2017
ok Tue Jul 18 20:04:38 2017
ok Tue Jul 18 20:04:38 2017
ok Tue Jul 18 20:04:40 2017
ok Tue Jul 18 20:04:40 2017
ok Tue Jul 18 20:04:40 2017
ok Tue Jul 18 20:04:40 2017
ok Tue Jul 18 20:04:40 2017
ok Tue Jul 18 20:04:42 2017
ok Tue Jul 18 20:04:42 2017
ok Tue Jul 18 20:04:42 2017
ok Tue Jul 18 20:04:42 2017
ok Tue Jul 18 20:04:42 2017
ok Tue Jul 18 20:04:44 2017
ok Tue Jul 18 20:04:44 2017
ok Tue Jul 18 20:04:44 2017
ok Tue Jul 18 20:04:44 2017
ok Tue Jul 18 20:04:44 2017<\/p>\n","protected":false},"excerpt":{"rendered":"

semaphore\u662f\u4e00\u4e2a\u5185\u7f6e\u7684\u8ba1\u6570\u5668 \u8ba1\u6570\u5668\u4e0d\u80fd\u5c0f\u4e8e0\uff0c\u5f53\u8ba1\u6570\u5668\u4e3a0\u65f6\uff0cacquire()\u5c06\u963b\u585e\u7ebf\u7a0b\u76f4\u5230\u5176\u4ed6\u7ebf […]<\/p>\n","protected":false},"author":1,"featured_media":43113,"comment_status":"open","ping_status":"closed","sticky":false,"template":"single-with-sidebar","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[146,283,322],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/posts\/46806"}],"collection":[{"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/comments?post=46806"}],"version-history":[{"count":0,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/posts\/46806\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/media\/43113"}],"wp:attachment":[{"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/media?parent=46806"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/categories?post=46806"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.xyryd.com\/wp-json\/wp\/v2\/tags?post=46806"}],"curies":[{"name":"wp","href":"http:\/\/api.w.org\/{rel}","templated":true}]}}