MemoryError Aneh dengan Python [ditutup]

Saya minta maaf karena tidak dapat merinci masalahnya lebih jauh, tetapi itu karena saya tidak mengerti apa yang salah di sini. Kesalahan ini disebabkan oleh baris 75 tetapi dia memiliki semua nilai variabel yang saya panggil. Saya jelas melewatkan sesuatu di sini, saya harap seseorang dapat memberi tahu saya apa.

Apa yang saya coba lakukan adalah menambahkan string ke variabel, untuk setiap bagian daftar.

<type 'exceptions.MemoryError'> Python 2.6.4: /opt/users/ipg/s/p/ipg.*********/python/python
Sat May 10 19:42:39 2014
A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

       73                                 """ % (description[field_count].value)
       74             for item in upload_field:
       75                 article_content += '<img src="http://www.*****.com/images/%s/%s">' % (link_title, item.filename)
       76             field_count = field_count + 1 
       77     elif isinstance(description, basestring):
___

    article_content undefined, link_title = 'sssfzxs', item = FieldStorage('upload_image1', '857143_7542303279...\x94\x01\xa3\x89\x82\xcc0\xc9n\xea/\x87\xff\xd9'), item.filename = '857143_754230327924155_1256712041_o.jpg'
    <type 'exceptions.MemoryError'>: 
          args = () 
          message = ''

person Solver    schedule 11.05.2014    source sumber
comment
Membangun string dengan operator += sangat tidak efisien dalam memori. Agaknya Anda sedang membuat string yang begitu besar sehingga Anda kehabisan memori yang tersedia. Namun, tidak ada cukup informasi di sini untuk menjelaskan lebih lanjut.   -  person Wooble    schedule 11.05.2014
comment
@Wooble Ini biasanya menambahkan ini hanya 3 kali ke string kosong jadi biasanya tidak akan kehabisan memori dalam waktu dekat.   -  person Solver    schedule 11.05.2014


Jawaban (1)


MemoryError dibangkitkan dalam situasi kehabisan memori, sesuai dengan dokumen.

Apakah ada kemungkinan kode Anda berputar di sana tanpa batas waktu?

Atau Anda mungkin benar-benar mencapai batas memori pada Python versi 32-bit hanya karena menggabungkan terlalu banyak data, situasi serupa seperti yang dijelaskan di sini. Dalam hal ini, Anda mungkin dapat mengoptimalkan penggabungan atau menggunakan Python versi 64-bit untuk membantu Anda menyelesaikannya.

person famousgarkin    schedule 11.05.2014
comment
Saya tidak berpikir saya akan mencapai batas memori. Jumlah data yang ditransfer sangat sedikit. - person Solver; 11.05.2014
comment
Nah, memorinya terisi oleh sesuatu di sana dalam proses itu. Anda dapat memasukkan beberapa penghitung dasar dan mencatat atau mencoba membuat profil penggunaan memori dengan Heapy untuk menemukan pelakunya. - person famousgarkin; 11.05.2014
comment
Perulangan saya memang perulangan tanpa batas waktu, butuh waktu lama bagi saya untuk menyadari alasannya. - person Solver; 12.05.2014