Я строю своего рода веб-скребок. В основном то, что сделал бы софт, это:
- Пользователь (я) вводит некоторые данные (идентификаторы) - идентификаторы являются сложными, поэтому не просто цифры
- На основании этих идентификаторов скрипт посещает http://localhost/ID
Каков наилучший способ сделать это? Поэтому я смотрю на 20-30 одновременных соединений, чтобы сделать это.
Я думал, будет ли простой цикл решением проблемы? Этот цикл запускает QThreads (это приложение Qt), поэтому они запускаются одновременно.
Однако проблема, с которой я сталкиваюсь в цикле, заключается в том, как заставить его использовать только те идентификаторы, которые не использовались до этого, т. Е. В итерации / потоке, которые были выполнены незадолго до этого? Нужна ли мне какая-то функция «делегатора», которая будет отслеживать, какие идентификаторы были использованы, и делегировать неиспользуемые идентификаторы в QThreads?
Теперь я написал некоторый код, но я не уверен, что он правильный:
class GUI(QObject):
def __init__(self):
print "GUI CLASS INITIALIZED!!!"
self.worker = Worker()
for i in xrange(300):
QThreadPool().globalInstance().start(self.worker)
class Worker(QRunnable):
def run(self):
print "Hello world from thread", QThread.currentThread()
Теперь я не уверен, действительно ли они достигают того, чего я хочу. Это на самом деле работает в отдельных потоках? Я спрашиваю, потому что currentThread()
одинаково каждый раз, когда выполняется, так что это не выглядит так.
По сути, мой вопрос сводится к тому, как одновременно выполнить несколько одинаковых QThreads?
Заранее спасибо за ответ!