【Python】多进程的进程池pool运行时报错:ValueError: Pool not
<span style="color:rgb(51,51,51);font-family:'-apple-system','Helvetica Neue',Helvetica,Arial,'PingFang SC','Hiragino Sans GB','WenQuanYi Micro Hei','Microsoft Yahei',sans-serif;font-size:14px;"> <span style="font-size:14px;">【笔记】 <span class="hljs-keyword" style="font-weight:bold;">for key <span class="hljs-keyword" style="font-weight:bold;">in <span class="hljs-selector-tag" style="font-weight:bold;">dd.keys(): createDirs(key)<span class="hljs-comment" style="color:rgb(153,153,136);">//创建目录 urls = img_url(<span class="hljs-selector-tag" style="font-weight:bold;">dd[key])<span class="hljs-comment" style="color:rgb(153,136);">//返回图片地址 <span class="hljs-keyword" style="font-weight:bold;">for index,url <span class="hljs-keyword" style="font-weight:bold;">in enumerate(urls): patch = <span class="hljs-string" style="color:rgb(221,17,68);">'{}/{}.jpg'.format(key,index) <span class="hljs-keyword" style="font-weight:bold;">if(url <span class="hljs-keyword" style="font-weight:bold;">in didload):<span class="hljs-comment" style="color:rgb(153,136);">//判断是否已经载过 print(patch,<span class="hljs-string" style="color:rgb(221,68);">'下载过了') <span class="hljs-keyword" style="font-weight:bold;">else: url = <span class="hljs-selector-tag" style="font-weight:bold;">p.apply_async(dowload_img,args=(url,patch))<span class="hljs-comment" style="color:rgb(153,136);">//下载图片 <span class="hljs-keyword" style="font-weight:bold;">if url: didload.append(url)<span class="hljs-comment" style="color:rgb(153,136);">//将已下载的地址保存 <span class="hljs-selector-tag" style="font-weight:bold;">p.close() <span class="hljs-selector-tag" style="font-weight:bold;">p.join()<p style="color:rgb(51,sans-serif;font-size:14px;">下载图片的代码如下: <code class="language-python"><code style="font-family:'Source Code Pro',monospace;font-size:1em;color:inherit;background:none;"><span class="hljs-function"><span class="hljs-keyword" style="font-weight:bold;">def <span class="hljs-title" style="color:rgb(153,0);font-weight:bold;">dowload_img<span class="hljs-params">(url,name):<p style="color:rgb(51,sans-serif;font-size:14px;">现在遇到两个问题: 1、如果运行代码的时候,刚好碰到已下载的,就不会再下载。一般连续两个目录也就是差不错70张左右不用下载的时候,程序就崩溃了。报ValueError: Pool not running错误。 2、我用KeyboardInterrupt捕捉中断,但是用了Pool以后就不起作用了<pre class="hljs vim" style="overflow:auto;font-family:'Source Code Pro',monospace;font-size:1em;color:inherit;background:none;"> except KeyboardInterrup<span class="hljs-variable" style="color:rgb(0,128);">t: <span class="hljs-keyword" style="font-weight:bold;">print(<span class="hljs-string" style="color:rgb(221,68);">'运行中断ctrl+c') with <span class="hljs-keyword" style="font-weight:bold;">open(<span class="hljs-string" style="color:rgb(221,68);">'didload.txt',68);">'w') <span class="hljs-keyword" style="font-weight:bold;">as ff: ff.<span class="hljs-keyword" style="font-weight:bold;">write(<span class="hljs-string" style="color:rgb(221,68);">','.<span class="hljs-keyword" style="font-weight:bold;">join(didload))<p style="color:rgb(51,sans-serif;font-size:14px;">可以捕捉到KeyboardInterrupt,但是后面的代码没有运行,程序也不会完全中断。<p style="color:rgb(51,sans-serif;font-size:14px;">请高手指点一下,谢谢~~ <span style="color:rgb(51,sans-serif;font-size:14px;"> <span style="color:rgb(51,sans-serif;font-size:14px;">解决: <span style="color:rgb(51,sans-serif;font-size:14px;"> <pre class="hljs stylus" style="overflow:auto;font-family:'Source Code Pro',monospace;font-size:1em;color:inherit;background:none;"><span class="hljs-selector-tag" style="font-weight:bold;">p.close()<span class="hljs-selector-tag" style="font-weight:bold;">p.join()<p style="color:rgb(51,sans-serif;font-size:14px;">不该写在最外层么?为什么写在?<code style="font-family:'Source Code Pro',monospace;font-size:.93em;color:rgb(199,37,78);background-color:rgb(249,242,244);">for key in dd.keys():?里面?<p style="color:rgb(51,sans-serif;font-size:14px;">转自:https://segmentfault.com/q/1010000011398851 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |