Re: We have zipimport, how about dllimport?

2006-01-28 Thread M�ta-MCI
ctypes ?


-- 
http://mail.python.org/mailman/listinfo/python-list


Re: We have zipimport, how about dllimport?

2006-01-28 Thread Martin v. Löwis
[EMAIL PROTECTED] wrote:
 I may be on particularly potent crack, but I was wondering whether it
 would make sense to distribute python code in DLLs so that the memory
 occupied by the bytecode would be consumed only once even if there were
 multiple processes using the same bytecode. Or is there another way to
 accomplish code sharing?

That wouldn't help much: as soon as a .pyc file is imported, it is
passed to the marshal module, which will create a code object out
of it (copying the actual data in the pyc file). Then, this code
object gets executed, containing import, def, and other statements.
The def statements, in turn, result in yet other code objects being
created, copying fragments of the original code object. Then, the
original code object is discarded (and its memory released).

So typically, you have two levels of copying, each involving interaction
with the per-process memory management. There is little hope for sharing
here.

 Of course I don't need the functionality right this week, but
 capability of running shared code is one of the advantages of natively
 compiled languages and someone must already have thought of this and
 knows why it would never work. ;-)

It's an advantage only if the code occupies a signifcant portion of the
memory. In bytecode languages, byte code is much more compact than
machine code, so there is comparatively little opportunity for savings.

OTOH, in *JIT* languages, the JIT code again counts for something,
and it typically has to be generated for each process. That's why
Microsoft's .NET has ngen.exe, the ahead-of-time (traditional)
compiler. The primary rationale is not sharing, though, but reducing
the startup time. In .NET 2.0, there is even an OS service that
creates compiled images of IL byte code.

LISP and Smalltalk implementations have yet another approach: the image.
They dump everything in memory into a disk file which can then be mapped
into memory. This image is created after all the loading indirections
and copies, and so constitutes the final form. So on the plus side,
this allows for sharing of code across multiple instances of the same
application. On the minus side, each Smalltalk application needs its
own image (even if they share a lot of code).

Regards,
Martin
-- 
http://mail.python.org/mailman/listinfo/python-list


We have zipimport, how about dllimport?

2006-01-27 Thread [EMAIL PROTECTED]
I may be on particularly potent crack, but I was wondering whether it
would make sense to distribute python code in DLLs so that the memory
occupied by the bytecode would be consumed only once even if there were
multiple processes using the same bytecode. Or is there another way to
accomplish code sharing?

Of course I don't need the functionality right this week, but
capability of running shared code is one of the advantages of natively
compiled languages and someone must already have thought of this and
knows why it would never work. ;-)

-- 
http://mail.python.org/mailman/listinfo/python-list