0

我有一个概念问题。

我目前有一个在永无止境的循环中执行的程序。

Def (mycode):

    Perform login to server and retrieve cookies etc
    While 1:
      Perform an URL request (with custom headers, cookies etc)
      Process the reply
      Perform URL requests dependent upon the values in replies
      Process reply

我很高兴能够继续这样下去,因为 URL 必须一个接一个地调用。

现在服务器将单个帐户限制为有限数量的功能,能够使用两个(或更多)不同的帐户执行此功能将很有用。

我的问题是:这可能吗?我已经对队列和多线程进行了相当多的阅读,如果各位好心人可以提出一个具有良好(易于理解)示例的方法,我将不胜感激。

4

1 回答 1

0

Gevent是一个具有示例的高性能绿色线程实现。

我不确定通过对同一服务器的不同帐户执行此操作是否意味着让不同的工作函数处理 url 处理 - 实际上Def (mycode) n每个帐户都有时间。也许您可以扩展细节。

>>> import gevent
>>> from gevent import socket
>>> urls = ['www.google.com', 'www.example.com', 'www.python.org']
>>> jobs = [gevent.spawn(socket.gethostbyname, url) for url in urls]
>>> gevent.joinall(jobs, timeout=2)
>>> [job.value for job in jobs]
['74.125.79.106', '208.77.188.166', '82.94.164.162']

此外,您可以通过使用beanstalkd之类的东西来解决问题,这将允许您为每个帐户运行主进程“n”次,并将结果放在 beanstalk 队列中以供另一个进程处理。无需处理线程,这在非平凡的应用程序中总是一件好事。

于 2013-01-31T01:22:37.243 回答