如何为工作线程创建管理器?

时间:2012-04-25 18:27:03

标签: python multithreading threadpool pool

该代码适用于单个“管理器”,它基本上会向服务器启动一些HTTP GET。但我碰到了一堵砖墙。

如何创建2个管理器,每个管理器都有自己的Download_Dashlet_Job对象和tcp_pool_object?从本质上讲,管理人员将在两个单独的工作岗位上指挥自己的工人。这似乎是学习Python类的一个非常好的难题。

import workerpool
from urllib3 import HTTPConnectionPool

class Download_Dashlet_Job(workerpool.Job):
  def __init__(self, url):
    self.url = url
  def run(self):
    request = tcp_pool_object.request('GET', self.url, headers=headers)

tcp_pool_object = HTTPConnectionPool('M_Server', port=8080, timeout=None, maxsize=3, block=True)
dashlet_thread_worker_pool_object = workerpool.WorkerPool(size=100)

#this section emulates a single manager calling 6 threads from the pool but limited to 3 TCP sockets by tcp_pool_object
for url in open("overview_urls.txt"):
  job_object = Download_Dashlet_Job(url.strip())
  dashlet_thread_worker_pool_object.put(job_object)

dashlet_thread_worker_pool_object.shutdown()
dashlet_thread_worker_pool_object.wait()

1 个答案:

答案 0 :(得分:0)

首先,workerpool.WorkerPool(size=100)创建100个工作线程。在下面的评论中,你说你想要6个主题?您需要将其更改为6.

要创建第二个池,您需要创建另一个池。您还可以创建另一个作业类,如果您愿意,只需将此不同类型的作业添加到同一个池中。