首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python多进程.进程的连接不能结束

python多进程.进程的连接不能结束
EN

Stack Overflow用户
提问于 2016-08-06 10:49:24
回答 1查看 1.1K关注 0票数 2

我将编写一个具有多进程(CPU拥挤)和多线程(IO拥挤)的程序(下面的代码只是一个示例,而不是程序)。

但是当代码满足join()时,它会使程序变成死锁。

我的代码在下面

代码语言:javascript
复制
import requests
import time
from multiprocessing import Process, Queue
from multiprocessing.dummy import Pool


start = time.time()
queue = Queue()
rQueue = Queue()
url = 'http://www.bilibili.com/video/av'
for i in xrange(10):
    queue.put(url+str(i))


def goURLsCrawl(queue, rQueue):
    threadPool = Pool(7)
    while not queue.empty():
        threadPool.apply_async(urlsCrawl, args=(queue.get(), rQueue))
    threadPool.close()
    threadPool.join()
    print 'end'


def urlsCrawl(url, rQueue):
    response = requests.get(url)
    rQueue.put(response)


p = Process(target=goURLsCrawl, args=(queue, rQueue))
p.start()
p.join()  # join() is here
end = time.time()
print 'totle time %0.4f' % (end-start,)

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-13 02:41:09

我终于找到了原因。正如您所看到的,我从Queue中导入了multiprocessing,所以Queue应该只用于进程,但是我让线程访问代码上的Queue,所以程序后面一定会发生一些未知的事情。

要更正它,只需导入Queue而不是multiprocessing.Queue

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38803425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档