Rumah > Soal Jawab > teks badan
pool = redis.ConnectionPool(host=host, port=port)
client = redis.StrictRedis(connection_pool=pool)
for i in range(10000):
for j in range(30):
client.lpush(IDLE_TASKS, json.dumps(args))
Kecekapan pelaksanaan ini sangat rendah.
Anda perlu menunggu berpuluh-puluh saat untuk pemasukan selesai.
Adakah cara yang lebih berkesan untuk menangani perkara ini?
args hanyalah tuple dengan kandungan seperti (1,2,"3")
怪我咯2017-06-28 09:23:58
Oleh kerana saya secara peribadi tidak pernah menggunakan perpustakaan redis, jadi saya hanya boleh cuba memberikan beberapa cadangan berdasarkan kod yang anda berikan Jika anda tidak menyukainya, jangan kecam:
1. Saya tidak tahu jika anda meletakkan ini args
是哪来的, 但是在这个循环体中, 似乎没看到改变, 所以能否将这个json.dumps(args)
di luar badan gelung dan laksanakannya:
args_dump = json.dumps(args)
for i in range(10000):
for j in range(30):
client.lpush(IDLE_TASKS, args_dump)
2. Memandangkan anda perlu menjana kira-kira 300,000 keping data yang sama, bolehkah anda menjana data ini dahulu dan kemudiannya lagi kerana tcp juga mempunyai faktor kelewatan tersendiriclient.lpush
untuk mengetahui perkara yang mengambil masa yang lama, atau anda boleh cuba menggunakan perpustakaan lain untuk melaksanakannya (anda perlu pergi ke Google untuk ini)cProfile