如果我一步一步地運行腳本完美工作,但是當我使用線程時會丟失50-60%。我使用Python +機械化模塊Python多線程缺失作業
#setting up the browser
mySite = 'http://example.com/managament.php?'
postData = {'UserID' : '', 'Action':'Delete'}
job_tab1_user1 = [1,2,3]
job_tab2_user1 = [4,5,6]
job_tab1_user2 = [7,8,9]
job_tab2_user2 = [10,12,13]
.... till user1000
#i want to point out that the lists are 100% different
def user1_jobs:
for i in job_tab1_user1:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
for i in job_tab2_user1:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
def user2_jobs:
for i in job_tab1_user2:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
for i in job_tab2_user2:
browser.open("http://example.com/jobs.php?actions="+i)
browser.open(mySite, Post_data)
... and so on till user 1000
我呼籲他們到底是這樣的:
t_user1 = threading.Thread(target=user1_jobs, args=[])
t_user1.start()
t_user2 = threading.Thread(target=user2_jobs, args=[])
t_user2.start()
我有一個像發送每秒200請求和所有的人都處理類似的腳本。我也嘗試過使用time.sleep(2),但又一次缺少了很多。 除了我的腳本有什麼問題之外,另一個問題是如果它壓縮此代碼的方式,因爲我使用了1000個用戶並且腳本達到了數千行。先謝謝你。
爲什麼不使用'Queue.Queue'類來存儲所有的工作?然後您可以使用線程池來處理隊列中的作業。 –
當你說「錯過」時,它錯過了什麼? – Torxed
@Toxxed將發佈的數據發送到服務器。示例:對於user1,tab1中的作業,user2中的作業,tab2中的作業。所以它是隨機完成的。 – MikeT