【发布时间】:2017-02-22 02:44:10
【问题描述】:
所以我有类似的东西
import multiprocessing
class MyFancyClass(object):
def __init__(self, name):
self.name = name
def do_something(self):
proc_name = multiprocessing.current_process().name
print 'Doing something fancy in %s for %s!' % (proc_name, self.name)
def worker(q):
obj = q.get()
obj.do_something()
if __name__ == '__main__':
urls = [
'http://www.python.org',
'http://www.python.org/about/',
'http://www.python.org/community/awards/'
# etc..
]
queue = multiprocessing.Queue()
p = multiprocessing.Process(target=worker, args=(queue,))
p.start()
queue.put(MyFancyClass('Fancy Dan'))
# Wait for the worker to finish
queue.close()
queue.join_thread()
p.join()
我想要做的是让 4 个或更多“工人”启动并处理 url,当一个完成时启动另一个。 什么是最好的方法来做到这一点。我花了两天时间搞不清楚。
谢谢 谢谢。
【问题讨论】:
-
您应该使用进程池。在此处阅读更多信息docs.python.org/2/library/multiprocessing.html
-
你能给我一个例子来说明如何在一个类中使用它吗?
-
pythonsheets.com/notes/python-concurrency.html -- 许多示例用作各种并行处理(包括多处理)的模板