有沒有一種可能的方式來加速我的代碼使用多處理接口?問題是這個接口使用map函數,它只與1個函數一起工作。但我的代碼有3個功能。我試圖將我的功能合併爲一個,但沒有取得成功。我的腳本從文件讀取站點的URL,並對其執行3個功能。 For循環使得它很慢,因爲我得到了很多的URLPython請求模塊多線程
import requests
def Login(url): #Log in
payload = {
'UserName_Text' : 'user',
'UserPW_Password' : 'pass',
'submit_ButtonOK' : 'return buttonClick;'
}
try:
p = session.post(url+'/login.jsp', data = payload, timeout=10)
except (requests.exceptions.ConnectionError, requests.exceptions.Timeout):
print "site is DOWN! :", url[8:]
session.cookies.clear()
session.close()
else:
print 'OK: ', p.url
def Timer(url): #Measure request time
try:
timer = requests.get(url+'/login.jsp').elapsed.total_seconds()
except (requests.exceptions.ConnectionError):
print 'Request time: None'
print '-----------------------------------------------------------------'
else:
print 'Request time:', round(timer, 2), 'sec'
def Logout(url): # Log out
try:
logout = requests.get(url+'/logout.jsp', params={'submit_ButtonOK' : 'true'}, cookies = session.cookies)
except(requests.exceptions.ConnectionError):
pass
else:
print 'Logout '#, logout.url
print '-----------------------------------------------------------------'
session.cookies.clear()
session.close()
for line in open('text.txt').read().splitlines():
session = requests.session()
Login(line)
Timer(line)
Logout(line)
所以多處理是複雜的,但gevent不是? OK :) – Messa 2015-02-08 12:06:37
Imho是的,當我沒有意識到很多事情時,我發現很容易理解gevent,而不是多處理池管理。Gevent爲我完成了大部分工作,但僅僅是個人觀點:-) – user3699166 2015-02-08 12:09:17
您確定'gevent'與'requests'庫兼容嗎?我記得至少有一些過去的'請求'版本無法像'gevent'一樣工作。 – jfs 2015-02-08 17:03:20