Python открывает несколько URL-соединений - urllib2 - PullRequest
1 голос
/ 03 декабря 2010

Я пытаюсь создать скрипт на python, который позволит мне загружать несколько соединений, аналогично открытию нескольких вкладок в браузере, более конкретно у меня есть такой код:

https://github.com/eWizardII/SOC357-Twitter-Facebook-Project/blob/master/chuck.py

Используя urlv и т. Д., Я загружаю несколько подключений к API, однако я хочу сделать так, чтобы я вызывал все 5 одновременно, а не подряд.Я изучал такие вещи, как извращенные и опрятные, но я не знаю, как их использовать, чтобы помочь мне.

Спасибо, Соломон

Ответы [ 3 ]

4 голосов
/ 03 декабря 2010

Используйте оболочку.

#!/bin/bash
python chuck.py "request 1" &
python chuck.py "request 2" &
python chuck.py "request 3" &
python chuck.py "request 4" &
python chuck.py "request 5" &

Это запустит 5 копий вашей программы. Он свяжет столько ядер и процессоров, сколько сможет. И - бонус - без программирования с использованием подпроцесса, потоков или чего-либо еще.

Если все 5 должны делать что-то по-другому, вам придется предоставить какие-то аргументы или варианты. Изучите argparse способ сбора аргументов командной строки.

1 голос
/ 03 декабря 2010

Вы можете создать HttpHandlers для обработки асинхронных HTTP-запросов (асинхронных, если речь идет о вашем коде, а не о реальных сетевых операциях).

Попробуйте это:

import urllib2

class MyHttpHandler(urllib2.HTTPHandler):
    def http_response(self, request, response):
        for l in response:
            print l
        return response

u = urllib2.build_opener(MyHttpHandler())
for i in range(1, 5):
    u.open('http://stackoverflow.com')
0 голосов
/ 03 декабря 2010

Вы можете использовать библиотеку threading .Это одна из вещей, которая подходит лучше всего.

...