Lors de l'écriture d'un robot, je souhaite enregistrer les données explorées dans la base de données. Il y a de nombreuses entrées dans chaque page. Par exemple, une personne peut avoir de nombreux visiteurs, je l'insère donc dans la boucle de déchargement,
. try:
sql_visitor='INSERT INTO visitor (ownername,owneruid,visitorname,visitoruid,visittime) VALUE ("%s",%d,"%s",%d,"%s")'%(ownername,owneruid,visitorname,visitoruid,visitortime)
print sql_visitor
self.cursor.execute(sql_visitor)
self.connect.commit()
except Exception as e:
print e
Une page et un fil de discussion. Je n'ai pas aimé la lenteur et j'en ai ouvert 5
.max_threads=5
while uid < 8000000 or threadlist:
for thread1 in threadlist:
if not thread1.is_alive():
threadlist.remove(thread1)
while len(threadlist) < max_threads and uid < 8000000:
uid+=1
thread2=threading.Thread(target=run,args=(uid,))
thread2.setDaemon(True)
thread2.start()
threadlist.append(thread2)
time.sleep(5)
Fonctionnement fluide :
INSERT INTO visiteur (ownername,owneruid,visitorname,visitoruid,visittime) VALUE ("huosai7",4893,"Liang2017",7252799,"2017-5-22 21:06")
INSERT INTO personalinfo (ownername,owneruid, jifen,huajiao,xiaomijiao,jinbi,haoyou,zhuti,rizhi,xiangce,fenxiang,kongjianfangwenliang,youxiangyanzheng,shipinrenzheng,juzhudi,chushengdi,shangcifabiaoshijian,shangcihuodongshijian,zuihoufangwen,zhuceshijian,zaixianshijian,shengri,xingbie) VALEUR("huosa i7",489 3 , 0,0,0,0,0,0,0,0,0,0,0,0,"","","2100-01-01 12:00","2100-01-01 12 : 00 ","2100-01-01 12:00","2004-1-3 19:28",0,"2100-01-01 12:00",0)
INSERT INTO visiteur (nom du propriétaire, identifiant du propriétaire, nom du visiteur , visiteur, visite) VALEUR ("龙乐",4894,"Liang2017",7252799,"2017-5-22 21:06")
(1062, "Entrée en double '4894-7252799-2017-05-22 21 : 06 :00' pour la clé 'PRIMAIRE'")
INSÉRER DANS les informations personnelles (nom du propriétaire, identifiant du propriétaire, jifen,huajiao,xiaomijiao,jinbi,haoyou,zhuti,rizhi,xiangce,fenxiang,kongjianfangwenliang,youxiangyanzheng,shipinrenzheng,juzhudi,chushengdi,shangcifabiaoshijian, shangcihuodongshijian, zuihoufangwen, zhuceshijian, zaixianshijian, shengri, xingbie) VALEUR("龙乐",4894,0,0,0,0,0,0,0,0,0,0,0,0,"","" , "2100-01-01 12:00", "2100-01-01 12:00", "2100-01-01 12:00", "2004-1-3 20:21", 0, "2100- 01 -01 12:00",0)
.......
J'ai donc mis max_thread à 10, et le résultat est le suivant :
INSERT INTO visiteur (nom du propriétaire, identifiant du propriétaire, nom du visiteur, identifiant du visiteur, heure de la visite) VALEUR ("xiao61", 4889, "Liang2017", 7252799, "2017-5-22 21:06")
(2006, 'Le serveur MySQL a disparu')
INSÉRER DANS les informations personnelles (nom du propriétaire, identifiant du propriétaire, jifen,huajiao,xiaomijiao,jinbi,haoyou,zhuti,rizhi,xiangce,fenxiang,kongjianfangwenliang,youxiangyanzheng,shipinrenzheng,juzhudi,chushengdi,shangcifabiaoshijian,shangcihuodongshijian,zuihoufangwen,zhuceshijian,zaixianshi jian,shengri , xingbie ) VALEUR("xiao61",4889,0,0,0,0,0,0,0,0,0,0,0,0,"","","2100-01-01 12:00" , "2100-01-01 12:00", "2100-01-01 12:00", "2004-1-3 15:56",0,"2100-01-01 12:00",0)
(2006, 'Le serveur MySQL a disparu')
INSERT INTO visiteur (nom du propriétaire, identifiant du propriétaire, nom du visiteur, identifiant du visiteur, heure de la visite) VALUE ("ours cool confus", 4897, "Liang2017", 7252799, "2017-5-22 21:06")
(2006, 'Le serveur MySQL a disparu')
INSÉRER DANS les informations personnelles (nom du propriétaire, identifiant du propriétaire, jifen,huajiao,xiaomijiao,jinbi,haoyou,zhuti,rizhi,xiangce,fenxiang,kongjianfangwenliang,youxiangyanzheng,shipinrenzheng,juzhudi,chushengdi,shangcifabiaoshijian,shangcihuodongshijian,zuihoufangwen,zhuceshijian,zaixianshi jian,shengri , xingbie ) VALUE("ours cool confus",4897,611,0,1655,0,0,2,0,0,0,34,0,0,"","","2007-3-27 00 : 37","2007-3-27 00:37","2007-3-27 00:37","2004-1-3 21:08",0,"2100-01-01 12:00",1 )
(2006, 'Le serveur MySQL a disparu')
.....
Vous pouvez voir que 2006 est sorti, puis j'ai défini max_thread sur 30, et les résultats sont les suivants :
C'est tout, est-ce assez détaillé ? Si ce n'est pas assez détaillé, de quoi d'autre avez-vous besoin ?
Regardez ici, je suppose que vous utilisez pymysql, sa description de sécurité des threads est 1 et le pep249 correspondant a une description détaillée :
Les threads peuvent partager des modules mais pas des connexions. Cela signifie que vous devrez peut-être créer une connexion dans chaque thread.
Na~Pourquoi ne pas utiliser ORM pour le faire ?