Rumah > Artikel > pembangunan bahagian belakang > Program Python saya terlalu perlahan. Bagaimana saya boleh mempercepatkannya?
Jika program Python anda terlalu perlahan, anda boleh mengikuti petua dan petua yang diberikan di bawah -
Elakkan abstraksi yang berlebihan, terutamanya dalam bentuk fungsi atau kaedah yang kecil. Abstraksi cenderung untuk membuat tidak arah dan memaksa jurubahasa untuk melakukan lebih banyak kerja. Jika tahap tidak arah melebihi jumlah kerja berguna yang dilakukan, program anda akan menjadi perlahan
Jika badan gelung sangat mudah, penterjemah overhed bagi gelung for itu sendiri mungkin menyumbang sebahagian besar overhed. Di sinilah fungsi peta berfungsi dengan lebih baik. Satu-satunya sekatan ialah badan gelung peta mestilah panggilan fungsi.
Terjemahan bahasa Cina bagiMari kita lihat contoh gelung
newlist = [] for word in oldlist: newlist.append(word.upper())
Kita boleh menggunakan peta dan bukannya gelung di atas untuk mengelakkan overhed−
newlist = map(str.upper, oldlist)
Menggunakan pemahaman senarai menggunakan lebih sedikit overhed berbanding gelung Mari lihat contoh yang sama dilaksanakan menggunakan pemahaman senarai -
newlist = [s.upper() for s in oldlist]
Ekspresi penjana diperkenalkan dalam Python 2.4. Ini dianggap sebagai alternatif terbaik untuk gelung kerana ia mengelakkan overhed menjana keseluruhan senarai sekaligus. Sebaliknya, mereka mengembalikan objek penjana yang boleh diulang sedikit demi sedikit -
iterator = (s.upper() for s in oldlist)
Python mengakses pembolehubah tempatan dengan lebih cekap daripada pembolehubah global. Kita boleh melaksanakan contoh di atas menggunakan pembolehubah tempatan sendiri -
def func(): upper = str.upper newlist = [] append = newlist.append for word in oldlist: append(upper(word)) return newlist
Penyata import boleh dilaksanakan dengan mudah. Selalunya berguna untuk meletakkannya di dalam fungsi untuk mengehadkan keterlihatan dan/atau mengurangkan masa permulaan awal. Dalam sesetengah kes, pelaksanaan berulang penyata import boleh menjejaskan prestasi dengan teruk.
Ini adalah pilihan yang lebih baik dan lebih pantas apabila menggabungkan berbilang rentetan menggunakan Sertai. Walau bagaimanapun, apabila tidak terdapat banyak rentetan, lebih cekap menggunakan operator + untuk penggabungan. Ia mengambil sedikit masa untuk dilaksanakan. Mari kita lihat ini dengan dua contoh.
Gunakan operator + untuk menggabungkan berbilang rentetan
Terjemahan bahasa Cina bagiKami kini akan menggabungkan banyak rentetan dan menyemak masa pelaksanaan menggunakan modul masa −
from time import time myStr ='' a='gjhbxjshbxlasijxkashxvxkahsgxvashxvasxhbasxjhbsxjsabxkjasjbxajshxbsajhxbsajxhbasjxhbsaxjash' l=[] # Using the + operator t=time() for i in range(1000): myStr = myStr+a+repr(i) print(time()-t)
0.003464221954345703
Gunakan Sertai untuk menyambung berbilang rentetan
Terjemahan bahasa Cina bagiKami kini akan menggunakan Sertai untuk menggabungkan banyak rentetan dan menyemak masa pelaksanaan. Apabila kita mempunyai banyak rentetan, penggabungan adalah pilihan yang lebih baik dan lebih pantas -
from time import time myStr ='' a='gjhbxjshbxlasijxkashxvxkahsgxvashxvasxhbasxjhbsxjsabxkjasjbxajshxbsajhxbsajxhbasjxhbsaxjash' l=[] # Using the + operator t=time() for i in range(1000): l.append(a + repr(i)) z = ''.join(l) print(time()-t)
0.000995635986328125
Atas ialah kandungan terperinci Program Python saya terlalu perlahan. Bagaimana saya boleh mempercepatkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!