{"id":129,"date":"2016-08-31T17:37:54","date_gmt":"2016-08-31T09:37:54","guid":{"rendered":"http:\/\/ayonel.me\/?p=129"},"modified":"2016-09-07T17:17:34","modified_gmt":"2016-09-07T09:17:34","slug":"some_python_code","status":"publish","type":"post","link":"https:\/\/ayonel.malash.net\/index.php\/2016\/08\/31\/some_python_code\/","title":{"rendered":"\u4e00\u4e9b\u6709\u610f\u601d\u7684python\u4ee3\u7801\u7247\u6bb5"},"content":{"rendered":"<p>\u672c\u6587\u6253\u7b97\u957f\u671f\u66f4\u65b0\u4e00\u4e9b\u6709\u610f\u601d\u7684python\u4ee3\u7801\u7247\u6bb5\uff0c\u5c31\u5f53\u505a\u662f\u5b66\u4e60\u7b14\u8bb0\u3002<\/p>\n<h3>1.python\u591a\u7ebf\u7a0b\u6b7b\u9501<\/h3>\n<div class=\"codecolorer-container python railscasts\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"python codecolorer\"><span class=\"kw1\">import<\/span> <span class=\"kw3\">time<\/span><span class=\"sy0\">,<\/span><span class=\"kw3\">threading<\/span><br \/>\n<br \/>\nlocka <span class=\"sy0\">=<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">Lock<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nlockb <span class=\"sy0\">=<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">Lock<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">def<\/span> fa<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'a'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">def<\/span> fb<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'b'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">def<\/span> fab<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; locka.<span class=\"me1\">acquire<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">try<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; fa<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">time<\/span>.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; lockb.<span class=\"me1\">acquire<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">try<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fb<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">finally<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lockb.<span class=\"me1\">release<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">finally<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; locka.<span class=\"me1\">release<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">def<\/span> fba<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; lockb.<span class=\"me1\">acquire<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">try<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; fb<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw3\">time<\/span>.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; locka.<span class=\"me1\">acquire<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">try<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fa<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">finally<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; locka.<span class=\"me1\">release<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">finally<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; lockb.<span class=\"me1\">release<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nt1 <span class=\"sy0\">=<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">Thread<\/span><span class=\"br0\">&#40;<\/span>target<span class=\"sy0\">=<\/span>fab<span class=\"br0\">&#41;<\/span><br \/>\nt2 <span class=\"sy0\">=<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">Thread<\/span><span class=\"br0\">&#40;<\/span>target<span class=\"sy0\">=<\/span>fba<span class=\"br0\">&#41;<\/span><br \/>\nt1.<span class=\"me1\">start<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nt2.<span class=\"me1\">start<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nt1.<span class=\"me1\">join<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nt2.<span class=\"me1\">join<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'end'<\/span><span class=\"br0\">&#41;<\/span><\/div><\/div>\n<h3>2.\u534f\u7a0bcoroutine(1)<\/h3>\n<p>\u6765\u6e90\uff1a<a href=\"http:\/\/www.liaoxuefeng.com\">\u5ed6\u96ea\u5cf0<\/a><\/p>\n<div class=\"codecolorer-container python railscasts\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"python codecolorer\"><span class=\"kw1\">def<\/span> consumer<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; r <span class=\"sy0\">=<\/span> <span class=\"st0\">''<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"kw2\">True<\/span>:<br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; n <span class=\"sy0\">=<\/span> <span class=\"kw1\">yield<\/span> r<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"kw1\">not<\/span> n:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'[CONSUMER] Consuming %s...'<\/span> % n<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; r <span class=\"sy0\">=<\/span> <span class=\"st0\">'200 OK'<\/span><br \/>\n<br \/>\n<span class=\"kw1\">def<\/span> produce<span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span>:<br \/>\n&nbsp; &nbsp; c.<span class=\"me1\">send<\/span><span class=\"br0\">&#40;<\/span><span class=\"kw2\">None<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; n <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> n <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">5<\/span>:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; n <span class=\"sy0\">=<\/span> n + <span class=\"nu0\">1<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'[PRODUCER] Producing %s...'<\/span> % n<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; r <span class=\"sy0\">=<\/span> c.<span class=\"me1\">send<\/span><span class=\"br0\">&#40;<\/span>n<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'[PRODUCER] Consumer return: %s'<\/span> % r<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; c.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nc <span class=\"sy0\">=<\/span> consumer<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nproduce<span class=\"br0\">&#40;<\/span>c<span class=\"br0\">&#41;<\/span><\/div><\/div>\n<p>\u8fd0\u884c\u7ed3\u679c\u4e3a\uff1a<\/p>\n<div class=\"codecolorer-container text railscasts\" style=\"overflow:auto;white-space:nowrap;width:100%;\"><div class=\"text codecolorer\">[PRODUCER] Producing 1...<br \/>\n[CONSUMER] Consuming 1...<br \/>\n[PRODUCER] Consumer return: 200 OK<br \/>\n[PRODUCER] Producing 2...<br \/>\n[CONSUMER] Consuming 2...<br \/>\n[PRODUCER] Consumer return: 200 OK<br \/>\n[PRODUCER] Producing 3...<br \/>\n[CONSUMER] Consuming 3...<br \/>\n[PRODUCER] Consumer return: 200 OK<br \/>\n[PRODUCER] Producing 4...<br \/>\n[CONSUMER] Consuming 4...<br \/>\n[PRODUCER] Consumer return: 200 OK<br \/>\n[PRODUCER] Producing 5...<br \/>\n[CONSUMER] Consuming 5...<br \/>\n[PRODUCER] Consumer return: 200 OK<\/div><\/div>\n<p>\u89e3\u91ca\uff1a<br \/>\n<strong>yield\u8868\u8fbe\u5f0f\u672c\u8eab\u6ca1\u6709\u8fd4\u56de\u503c\uff0c\u5b83\u7684\u8fd4\u56de\u503c\u9700\u8981\u7b49\u5230\u4e0b\u6b21\u8c03\u7528generator\u51fd\u6570\u65f6\uff0c\u7531send(args)\u51fd\u6570\u7684\u53c2\u6570\u8d4b\u4e88\u3002<br \/>\n<\/strong><\/p>\n<h3>3.\u534f\u7a0bcoroutine(2)<\/h3>\n<p>\u6765\u6e90\uff1a<a href=\"http:\/\/blog.csdn.net\/gvfdbdf\/article\/details\/49254037\">http:\/\/blog.csdn.net\/gvfdbdf\/article\/details\/49254037<\/a><\/p>\n<div class=\"codecolorer-container python railscasts\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"python codecolorer\"><span class=\"co1\"># -*- \u5f02\u6b65IO -*- &nbsp;<\/span><br \/>\n<span class=\"kw1\">import<\/span> asyncio &nbsp;<br \/>\n<span class=\"kw1\">import<\/span> <span class=\"kw3\">threading<\/span> &nbsp;<br \/>\n&nbsp; <br \/>\n<span class=\"co1\"># @asyncio.coroutine\u628a\u4e00\u4e2agenerator\u6807\u8bb0\u4e3acoroutine\u7c7b\u578b &nbsp;<\/span><br \/>\n<span class=\"sy0\">@<\/span>asyncio.<span class=\"me1\">coroutine<\/span> &nbsp;<br \/>\n<span class=\"kw1\">def<\/span> sub<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'sub start: ...'<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; n <span class=\"sy0\">=<\/span> <span class=\"nu0\">10<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"kw2\">True<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'yield start'<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\"># asyncio.sleep()\u4e5f\u662f\u4e00\u4e2acoroutine\u7c7b\u578b\u7684generator\uff0c\u6240\u4ee5\u7ebf\u7a0b\u4e0d\u4f1a\u4e2d\u65ad\uff0c\u800c\u662f\u76f4\u63a5\u6267\u884c\u4e0b\u4e00\u4e2a\u5faa\u73af\uff0c\u7b49\u5f85yield from\u7684\u8fd4\u56de &nbsp;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\"># \u53ef\u4ee5\u7b80\u5355\u7684\u7406\u89e3\u4e3a\u51fa\u73b0yield\u4e4b\u540e\u5219\u5f00\u542f\u4e00\u4e2a\u534f\u7a0b(\u7c7b\u4f3c\u5f00\u542f\u4e00\u4e2a\u65b0\u7ebf\u7a0b),\u4e0d\u7ba1\u8fd9\u4e2a\u534f\u7a0b\u662f\u5426\u6267\u884c\u5b8c\u6bd5\uff0c\u7ee7\u7eed\u4e0b\u4e00\u4e2a\u5faa\u73af &nbsp;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"co1\"># \u5f00\u542f\u65b0\u534f\u7a0b\u540e\uff0cprint('yield start')\u4f1a\u56e0\u4e3a\u7ee7\u7eed\u6267\u884c\u5faa\u73af\u88ab\u7acb\u5373\u6267\u884c\uff0c\u53ef\u4ee5\u901a\u8fc7\u6253\u5370\u7ed3\u679c\u89c2\u5bdf &nbsp;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; r <span class=\"sy0\">=<\/span> <span class=\"kw1\">yield<\/span> <span class=\"kw1\">from<\/span> asyncio.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; n <span class=\"sy0\">=<\/span> n - <span class=\"nu0\">1<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'---sub: %s, &nbsp;thread:%s'<\/span> %<span class=\"br0\">&#40;<\/span>n<span class=\"sy0\">,<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">currentThread<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> n <span class=\"sy0\">==<\/span> <span class=\"nu0\">0<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span> &nbsp;<br \/>\n&nbsp;<br \/>\n<span class=\"sy0\">@<\/span>asyncio.<span class=\"me1\">coroutine<\/span> &nbsp;<br \/>\n<span class=\"kw1\">def<\/span> add<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'add start: ...'<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; n <span class=\"sy0\">=<\/span> <span class=\"nu0\">10<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">while<\/span> <span class=\"kw2\">True<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'yield start'<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; r <span class=\"sy0\">=<\/span> <span class=\"kw1\">yield<\/span> <span class=\"kw1\">from<\/span> asyncio.<span class=\"me1\">sleep<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; n <span class=\"sy0\">=<\/span> n + <span class=\"nu0\">1<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">print<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">'+++add: %s, &nbsp;thread:%s'<\/span> %<span class=\"br0\">&#40;<\/span>n<span class=\"sy0\">,<\/span> <span class=\"kw3\">threading<\/span>.<span class=\"me1\">currentThread<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> n <span class=\"sy0\">&gt;<\/span> <span class=\"nu0\">20<\/span>: &nbsp;<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">break<\/span> &nbsp;<br \/>\n&nbsp; <br \/>\n&nbsp; <br \/>\n<span class=\"co1\"># \u83b7\u53d6EventLoop: &nbsp;<\/span><br \/>\nloop <span class=\"sy0\">=<\/span> asyncio.<span class=\"me1\">get_event_loop<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\n<span class=\"co1\"># \u6267\u884ccoroutine &nbsp;<\/span><br \/>\ntasks <span class=\"sy0\">=<\/span> <span class=\"br0\">&#91;<\/span>add<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>sub<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#93;<\/span> &nbsp;<br \/>\nloop.<span class=\"me1\">run_until_complete<\/span><span class=\"br0\">&#40;<\/span>asyncio.<span class=\"me1\">wait<\/span><span class=\"br0\">&#40;<\/span>tasks<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;<br \/>\nloop.<span class=\"me1\">close<\/span><span class=\"br0\">&#40;<\/span><span class=\"br0\">&#41;<\/span><\/div><\/div>\n<p>\u6267\u884c\u7ed3\u679c\uff1a<\/p>\n<div class=\"codecolorer-container text railscasts\" style=\"overflow:auto;white-space:nowrap;width:100%;height:100%;\"><div class=\"text codecolorer\">add start: ...<br \/>\nyield start add<br \/>\nsub start: ...<br \/>\nyield start sub<br \/>\n---sub: 9, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n+++add: 11, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start add<br \/>\n---sub: 8, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n---sub: 7, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n+++add: 12, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start add<br \/>\n---sub: 6, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n---sub: 5, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n+++add: 13, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start add<br \/>\n---sub: 4, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n---sub: 3, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start sub<br \/>\n+++add: 14, &nbsp;thread:&lt;_MainThread(MainThread, started 140735116865536)&gt;<br \/>\nyield start add<br \/>\n......<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u6253\u7b97\u957f\u671f\u66f4\u65b0\u4e00\u4e9b\u6709\u610f\u601d\u7684python\u4ee3\u7801\u7247\u6bb5\uff0c\u5c31\u5f53\u505a\u662f\u5b66\u4e60\u7b14\u8bb0\u3002 1.python\u591a\u7ebf\u7a0b\u6b7b\u9501 import [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-129","post","type-post","status-publish","format-standard","hentry","category-python"],"_links":{"self":[{"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/posts\/129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/comments?post=129"}],"version-history":[{"count":10,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/posts\/129\/revisions"}],"predecessor-version":[{"id":146,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/posts\/129\/revisions\/146"}],"wp:attachment":[{"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/media?parent=129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/categories?post=129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ayonel.malash.net\/index.php\/wp-json\/wp\/v2\/tags?post=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}