Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program Python saya terlalu perlahan. Bagaimana saya boleh mempercepatkannya?

Program Python saya terlalu perlahan. Bagaimana saya boleh mempercepatkannya?

王林
王林ke hadapan
2023-09-11 17:01:02711semak imbas

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 -

Abstrak

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

Elakkan gelung di atas kepala

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 bagi

Contoh

ialah:

Contoh

Mari 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)

Gunakan pemahaman senarai

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

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)

Pembolehubah setempat

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

Import penyata overhed

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.

Rentetan sambungan

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 bagi

Contoh

ialah:

Contoh

Kami 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)

Output

0.003464221954345703

Gunakan Sertai untuk menyambung berbilang rentetan

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Kami 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)

Output

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam