【发布时间】:2015-10-20 16:55:24
【问题描述】:
我正在尝试实现多处理并努力到达我需要到达的地方。
所以我以前用 Celery 完成了多处理的一些背景,所以我习惯于能够将作业发送给工作人员并在其完成时进行轮询,并且即使其他作业正在进行,也可以获得作业的结果。我试图将其与多处理联系起来。这是我到目前为止从我发现的各个站点中挖掘出来的内容...
import urllib2
import time
from multiprocessing.dummy import Pool as ThreadPool
import random
def openurl(url):
time.sleep(random.randrange(1,10))
print url
return urllib2.urlopen(url)
urls = [
'http://www.python.org',
'http://www.python.org/about/',
'http://www.onlamp.com/pub/a/python/2003/04/17/metaclasses.html',
'http://www.python.org/doc/',
'http://www.python.org/download/',
'http://www.python.org/getit/',
'http://www.python.org/community/',
'https://wiki.python.org/moin/',
'http://planet.python.org/',
'https://wiki.python.org/moin/LocalUserGroups',
'http://www.python.org/psf/',
'http://docs.python.org/devguide/',
'http://www.python.org/community/awards/'
# etc..
]
pool = ThreadPool(20)
results = pool.map(openurl, urls)
pool.close()
pool.join()
print 'now what'
所以我在我的 url 上启动了 openurl 函数,但是如果我在“print 'now what'”处中断,它不会在我所有的工作完成之前中断。
我如何“轮询”我的线程并在结果进入时返回它们?
谢谢!
【问题讨论】:
-
完全不清楚您在这里的实际意思。你在说什么结果?请提供更多详细信息。
标签: python dictionary multiprocessing pool