스크립트를 실행하면 단계가 완벽하게 작동하지만 스레딩을 사용할 때 50-60 %가 손실됩니다. Python 멀티 스레딩 작업이 누락되었습니다
t_user1 = threading.Thread(target=user1_jobs, args=[])
t_user1.start()
t_user2 = threading.Thread(target=user2_jobs, args=[])
t_user2.start()
내가 200 초당 요청 그들 모두가 처리와 같은 전송하는 유사한 스크립트가 : 나는 파이썬 + 모듈을
#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
을 기계화 그리고 이렇게 결국 그들에게 전화 사용하고 있습니다 . 나 또한 time.sleep (2)를 사용하여 시도했지만, 다시 많이 빠져있다. 내 스크립트에서 잘못된 점 이외의 다른 질문은 1000 명의 사용자를 사용하고 스크립트가 수천 줄에 이르기 때문에이 코드를 압축하는 것입니다. 미리 감사드립니다.
왜 모든 작업을 저장하기 위해'Queue.Queue' 클래스를 사용하지 않습니까? 그런 다음 스레드 풀을 사용하여 큐의 작업을 처리 할 수 있습니다. –
"misses"라고하면 정확히 무엇을 그리는가? – Torxed
@ 게시 된 데이터를 서버로 보내도록 설정했습니다. 예 : user1의 경우 tab1의 작업, user2의 경우 작업은 tab2입니다. 그래서 무작위로 완료됩니다. – MikeT