<div dir="ltr"><div dir="ltr">Já bych to spíš viděl na nedostatek paměti v procesu. Na 32bit systému (případně pokud je to 32bit program na 64bit systému) se virtuální paměť procesu musí vejít do 2 GB, a může nastat nějaká fragmentace, kdy např. nemusí existovat souvislý volný úsek požadované velikosti. Ale nevím, jestli je to tímto.<div><br></div><div>Každopádně zpracovávat soubor po částech je správné řešení, zvlášť pokud je to něco takhle "jednoduchého". (Např. dělat join dvou souborů po částech už je mnohem těžší.)</div><div><br></div><div>PM</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">út 24. 9. 2019 v 9:49 odesílatel zu1234 <<a href="mailto:zu1234@seznam.cz">zu1234@seznam.cz</a>> napsal:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Myslím že to není můj případ:<br>
Soubor byl otevřen jednoduše, tedy předpokládám buffrovaně:<br>
with file(FFN_OUT, 'wb') as FI:<br>
<br>
Soubor nebyl tlačen po síti, byl umístěn lokálně na C: .<br>
<br>
Děkuji za zájem.<br>
Z vašich reakcí vyplývá že jsem asi neudělal žádnou primitivní chybu, <br>
jen jsem prostě šlápl mimo dálnici.<br>
<br>
Dne 24.9.2019 v 8:13 mtip napsal(a):<br>
> A neukládal si to po netu?<br>
><br>
> On x86 (32-bit) or IA64 (64-bit) systems, the maximum buffer size is just under 64MB. For X64 systems, the maximum buffer size is just under 32MB.<br>
> The maximum unbuffered read and write size limits are imposed by the design of the IO manager inside the Windows executive.<br>
> When an application reads or writes files that are opened with FILE_FLAG_NO_BUFFERING,<br>
> the IO Manager locks the application's buffer into physical RAM and then maps the virtual addresses into physical addresses<br>
> to pass to the disk device by making a memory descriptor list (MDL).<br>
> The buffer size limitation comes from the maximum size MDL that the IO Manager will create.<br>
> The reason for the difference between platforms is the way the maximum buffer size is calculated from the memory page size and pointer size.<br>
> The IO Manager uses the following formula to compute the maximum size MDL:<br>
><br>
> ((65535 - sizeof(MDL)) / sizeof(ULONG_PTR)) * PAGE_SIZE<br>
><br>
> This formula has the following results:<br>
><br>
> Processor Page Size Pointer Size MDL calculation<br>
> ======== ======== ========= =============<br>
><br>
> x86 (32-bit) 4096 4 bytes ((65535 - 28) / 4) * 4096 = 67076096 bytes (63.97 MB)<br>
><br>
> IA64 8096 8 bytes ((65535 - 48) / 8) * 8192 = 67051520 bytes (63.95 MB)<br>
><br>
> X64 4096 8 bytes ((65535 - 48) / 8) * 4096 = 33525760 bytes (32MB - 28K)<br>
><br>
> This limitation occurs when the file is opened with FILE_FLAG_NO_BUFFERING.<br>
><br>
> Dne 23.09.2019 v 16:43 zu1234 napsal(a):<br>
>> W10 prof 32 bit<br>
>> Filesystém NTFS<br>
>> Python 2.7.15<br>
>> Opakuji: pokud soubor zapisuju po částech, tak bez problému.<br>
>> Znovu jsem to zkoušel zapsat vcelku: neprošlo cca 100MB.<br>
>><br>
>> Dne 23.9.2019 v 16:14 Petr Messner napsal(a):<br>
>>> Na jakém systému? Linux?<br>
>>><br>
>>> Nezapisoval jsi soubor větší než 4 GB na FAT32?<br>
>>><br>
>>> Nezapisoval jsi do souboru otevřeném jen pro čtení?<br>
>>><br>
>>> Nejsi na 32bit systému, nebo nemáš spuštěný 32bit Python?<br>
>>><br>
>>> Jen tak na zkoušku jsem si v Pythonu 3 zkusil jedním write zapsat 20GB soubor, bez problému.<br>
>>><br>
>>> PM<br>
>>><br>
>>> po 23. 9. 2019 v 15:59 odesílatel zu1234 <<a href="mailto:zu1234@seznam.cz" target="_blank">zu1234@seznam.cz</a> <mailto:<a href="mailto:zu1234@seznam.cz" target="_blank">zu1234@seznam.cz</a>>> napsal:<br>
>>><br>
>>> IOError, 22, Invalid argument<br>
>>><br>
>>><br>
>>><br>
>>> Dne 23.9.2019 v 13:10 Petr Messner napsal(a):<br>
>>>> A jaký byl text toho IOError? To, že to nic neříká tobě, neznamená, že to nevysvětluje tu chybu :)<br>
>>>><br>
>>>> file.write je high level metoda, která volá OS syscall write tolikrát, kolik je potřeba, takže teoreticky jsi omezený jen velikostí RAM.<br>
>>>><br>
>>>> PM<br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>><br>
>>>> po 23. 9. 2019 v 11:43 odesílatel zu1234 <<a href="mailto:zu1234@seznam.cz" target="_blank">zu1234@seznam.cz</a> <mailto:<a href="mailto:zu1234@seznam.cz" target="_blank">zu1234@seznam.cz</a>>> napsal:<br>
>>>><br>
>>>> Při vytváření (binárního) souboru pomocí file.write() jsem se utkal s<br>
>>>> nic neříkající chybou io error ... .<br>
>>>> Nakonec jsem zjistit že větší soubor je nutno zapisovat po částech a ne<br>
>>>> naráz.<br>
>>>> Nenašel jsem jak zjistit jak největší může ta část být.<br>
>>>> Program funguje, ale chtěl bych vědět víc.<br>
>>>> Orientuje se někdo lépe?<br>
>>>> Díky ZU<br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Python mailing list<br>
>>>> <a href="mailto:python@py.cz" target="_blank">python@py.cz</a> <mailto:<a href="mailto:python@py.cz" target="_blank">python@py.cz</a>><br>
>>>> <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
>>>><br>
>>>> Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
>>>><br>
>>>><br>
>>>> _______________________________________________<br>
>>>> Python mailing list<br>
>>>> <a href="mailto:python@py.cz" target="_blank">python@py.cz</a> <mailto:<a href="mailto:python@py.cz" target="_blank">python@py.cz</a>><br>
>>>> <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
>>>><br>
>>>> Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
>>><br>
>><br>
>> _______________________________________________<br>
>> Python mailing list<br>
>> <a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
>> <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
>><br>
>> Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
>><br>
> _______________________________________________<br>
> Python mailing list<br>
> <a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
> <a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
><br>
> Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
<br>
<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:python@py.cz" target="_blank">python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" rel="noreferrer" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
<br>
Visit: <a href="http://www.py.cz" rel="noreferrer" target="_blank">http://www.py.cz</a><br>
</blockquote></div></div>