RJ博客

Python多线程 - 刷简书阅读数

本文目录

今天发现简书在未登录状态下,访问一次阅读数+1,基于这个逻辑想到了再Linux下用curl访问链接增加阅读数,发现curl访问并没有使阅读数增加,基本确定简书是用ajax请求接口使阅读数+1的,经过排查发现是 mark_viewed.json 这个接口,下面以《QQ麻将番数规则》这篇文章为例讲解下,阅读数上报接口:

http://www.jianshu.com/notes/1a7358890b15/mark_viewed.json

一个简单的版本:

import requests
import thread

headers = {'Referer': 'http://www.jianshu.com/p/1a7358890b15'}
user_data = {'uuid':'b3a9e7fd-f0e1-40ce-adb9-d0cb61796880'}
url = 'http://www.jianshu.com/notes/1a7358890b15/mark_viewed.json'

data = []
count = 0

while 1:
    response = requests.post(url, headers=headers, data=user_data)
    
    count+=1
    if count%10==0:
        print count

运行结果:

C:\Users\Administrator\Desktop>python read_count.py
10
20
30
40
50

已经能让阅读数增加了,但是速度比较慢,而且此版本网络不好的话,post会报错,导致所属进程终止运行,当所有进程都被终止了,程序也就不会生效了。

于是添加了抛异常模块,同时于是结合了python的多线程编程:

import requests
import thread
import time

# header
headers = {'Referer': 'http://www.jianshu.com/p/1a7358890b15'}
# user_data
user_data = {'uuid':'b3a9e7fd-f0e1-40ce-adb9-d0cb61796880'}
# url
url = 'http://www.jianshu.com/notes/1a7358890b15/mark_viewed.json'

data = []
count = 0
passes = 0 

def calculate():
    global count,passes
    while 1:
        '''抛异常,不然网络不好的话,post会报错,导致所属进程终止运行,
        当所有进程都被终止了,程序也就不会生效了'''
        try:
            response = requests.post(url, headers=headers, data=user_data)
        except Exception as e:
            passes+=1
            print 'pass:'+str(passes)
        
        count+=1
        if count%100==0:
            print count

def runThread():
    for x in xrange(1,50):
        thread.start_new_thread( calculate, () )

if __name__ == '__main__':
    # 创建新线程
    try:
        runThread()
    except:
        print "Error: unable to start thread"

    while 1:
        time.sleep(1)
        pass

另一种多线程写法:

import requests
import threading
import time
 
# header
headers = {'Referer': 'http://www.jianshu.com/p/1a7358890b15'}
# user_data
user_data = {'uuid':'b3a9e7fd-f0e1-40ce-adb9-d0cb61796880'}
# url
url = 'http://www.jianshu.com/notes/1a7358890b15/mark_viewed.json'

data = []
threads = []
count = 0
passes = 0

class myThread (threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.counter = counter
    def run(self):
        # print "Starting " + self.name
        print_time(self.name, self.counter, 100)

def print_time(threadName, delay, counter):
    global count,passes
    while counter:
        # time.sleep(delay)
        try:
            response = requests.post(url, headers=headers, data=user_data)
        except Exception as e:
            passes+=1
            print 'pass:'+str(passes)

        count+=1
        if count%100==0:
            print count

        counter -= 1

def runThread():
    for x in xrange(1,500):
        # 创建新线程
        exec("thread%s = myThread(%s, 'Thread-%s', 1)" %(x,x,x))
        # 开启新线程
        exec("thread%s.start()" %(x))
        # 添加线程到线程列表
        exec("threads.append(thread%s)" %(x))
    
 
count = 0
while count>=0:
    t0 = time.time()

    # 等待所有线程完成
    for t in threads:
        t.join()

    print "Exiting Main Thread"
    t1 = time.time()
    print "time used:"+str(t1-t0)

    print "Starting Main Thread"
    print "Total:"+str(count*50000)+"\n"
    count += 1

    runThread()

Windows下测试,刷50000次耗时127秒左右:

Exiting Main Thread
time used:127s
Starting Main Thread
Total:50000


References:

http://www.runoob.com/python/python-multithreading.html

相关推荐

发表评论

  • 欢迎评论

  • Привет! Такой прикольный сайт. Ппц сколько приколов...Мяу-Мяу, Гашишь, Героин, Speed, и т.д. Заходи на сайт: <b> </b>

  • Амигдалин капсулы, которые убивает раковые клетки (напрямую от производителя). Лечение без каких-либо операций, самый безопасный способ для здоровья. Работает и используется у многих пациентов. Бесплатная доставка по всему миру! E. почта: info@istiespigu.lt вайбер/ватсап: 37067970237

  • d

    Et personne ne voudrait pour Mrazek imploser plus de capitaine Steven Stamkos, qui n'a pas encore inscrire un but pour Tampa Bay dans cette série.

  • Hello. And Bye.

  • The Packers let veterans A.J. Hawk and Brad Jones in the offseason. UCLA's Eric Kendricks, Mississippi State's Bernardrick McKinney, and TCU's Paul Dawson are among the top inside linebackers in the draft. Roethlisberger was 28 of 45 for 262 yards with a touchdown, three interceptions and three sacks. Browns coach Mike Pettine considered several factors before deciding to go back to McCown, who was injured while trying to dive into the end zone on Cleveland's opening drive this season. To return to title contention, Miami must draft better. BY THE SACKFUL: The Bengals finished last in the NFL in sacks last season with only 20, in large part because their line got little push into the backfield. They're much better this year. After dropping Kansas City's Alex Smith five times and Seattle's Russell Wilson four times in the last two games, they're up to 15 sacks already.

  • Good day, My name is Anthony Russell, a UK registered private Investment Manager . We seek individuals with Financial Management knowledge that are capable of handling investment portfolio and management from private investors. If you have fund management abilities, credible projects in need of loan, JV or existing businesses that requires expansion we will be delighted to work with you on a minimal ROI . Details will be provided on hearing back from you with your business executive summary via my direct email : anthonyrussell@deximinvestmentsolutionsukltd.com Kind Regards, Anthony Russell Managing Partner Tel Line: 447440934362

  • Malheureusement, ce match n'a pas eu lieu pour un certain nombre de personnes croient reasons.

  • Les Steelers secondaires ont abandonné le cinquième le plus verges par la passe et le quatrième plus touchdowns.

  • So qui a l'avantage d'aller de l'avant, les Cowboys ou les Eagles?

  • As an substitute of chichi in offence, how assess as spending uniqueness convenience autobiography preparing a victuals together? Flood elbow-grease cuts the existent area every nowadays in half, and it’s something that you can do with your moepe.insriw.me/trouwe-vrouw/plastic-zakken-bedrukken.php children as well. Gender roles may be something that they learn in group or from the media, but sharing responsibilities in a rare motility imply own them to bent that cooking can be a sidetrack, well-paying split looking to all.

  • Yes, I with you definitely agree

  • Hi, a have one question. What all people doing here? Why we dont living with real life?

  • fuck sex gay dick porn

  • ПАМЯТНИКИ pqd.ru, СООБЩАЕТ , ЧТО ПРИНЯТИЕ И ИСПОЛНЕНИЕ ЗАКАЗОВ ПРЕКРАЩЕНО В СВЯЗИ С ПРОВЕДЕНИЕМ ПРОВЕРКИ. Телефон для справок 7 (495) 518-44-23, электронная почта info@pqd.ru

  • Техосмотр онлай во всех городах России. Диагностическая карта для осаго, за 430р на все категории (A,B,C,D) Часто задаваемые вопросы клиентов dkregru.ru Что такое Диагностическая карта Это бланк формата А4, на котором в виде таблицы указаны все результаты проверки авто. Проверка работоспособности касается всех систем, влияющих на безопасность управления транспортным средством. Единого вида (стандарта) этой карты нет, государство регулирует только ее содержание, которое обязательно должно быть одинаковым. Карта может быть выдана письменном или в электронном виде. Карта изготавливается в 2-х экземплярах, одна карта остается у технического эксперта СТО, а вторая - отдается автовладельцу. Результаты проверки также отправляется в ЕАИСТО. Срок хранения карты у эксперта составляет три года, в информационной системе - 5 лет. Срок действия диагностической карты Для транспортов, осуществляющих пассажирские перевозки - 6 мес., для ТС, возраст которых менее 7 лет - 2 года, для

  • Лучшие проститутки Питера, шлюхи и путаны Санкт-Петербурга Проститутки Питера это самое яркое воплощение сексуальности и женской красоты Ни для кого не секрет, что проститутки Питера это самое яркое воплощение женской красоты, сексуальности и раскрепощенности. Лучшие проститутки Питера способны свести с ума даже самых закоренелых семьянинов и верных мужей и подарить им те часы радости и сексуального наслаждения, которых они никогда не смогут получить от своих привычных партнеров, жен, подруг. Проститутки Питера позволят Вам воплотить в реальность все свои самые смелые и необычные фантазии, а сделают они это очень умело и профессионально. Питера проститутки в большинстве своем сами обожают секс и с радостью ставят всевозможные сексуальные эксперименты и пожалуй ни одна девушка не сможет сравниться в мастерстве с проверенными проститутками Питера. Ну разве Вы не мечтаете оказаться в объятиях обворожительной и нежной красотки? Рядом с которой Вы будете чувствовать себя настоящим мужчи

  • Hello! nearby.wang We present oneself Sending your message through the Contact us form which can be found on the sites in the contact section. Contact form are filled in by our program and the captcha is solved. The superiority of this method is that messages sent through feedback forms are whitelisted. This technique increases the chances that your message will be open. Our database contains more than 25 million sites around the world to which we can send your message. The cost of one million messages 49 USD FREE TEST mailing of 50,000 messages to any country of your choice. This message is automatically generated to use our contacts for communication. Contact us. Telegram - @FeedbackFormEU Skype FeedbackForm2019 Email - FeedbackForm@make-success.com WhatsApp - 44 7598 509161

  • Great looking site. Think you did a great deal of your very own html coding.

  • Hi there, I enjoy reading through your article. I wanted to write a little comment to support you.

  • damei yamiedie