Oh, no!! Script as in "shell script".
>
> Question: Are you creating both scripts from scratch?
> Yes?
Yes.
Then you can define whatever protocol is needed for your usage and
> is available on your OS.
>
> If it is a one-shot (spawn sub, wait, retrieve results) you could
> generate a temporary file name in the parent, pass that name to the sub
> when invoking it, wait for the sub to complete (giving you a status
> code) and then read the result the sub has written to the file.
Yes, it's once shot. But how do I pass "that name"?
From all the arguments of class Popen (http://docs.python.org/lib/
node529.html) perhaps I could use "env" only. Or am I wrong?
TCP/IP sounds good but isn't it a bit too heavy?
And what the other options goes I would prefer a cross platform
solution, if there is one.
PS: both with mmpam and temp file you probably meant that I should
hard code some as-weirdest-filename-as-possible two both programs but
what if I run the computation several times?
And thanks for reply!
>
> Or, you could have parent and sub both mmap the same "file",
> essentially passing data in memory unless it becomes too large and pages
> out to swap disk. You might even be able to do bidirectional and dynamic
> updates (rather than waiting for the sub to exit)... Define, say, an
> epoch count for each process -- these would be the first two words of
> the mmap file
>
> |p-epoch|s-epoch|n-words of p-data (fixed constant known to both)|n-words of s-data|
>
> periodically the parent would examine the value of s-epoch, and if it
> has changed, read the s-data.. (both sides write the data first, then
> update the epoch count). When the epoch stays the same and two
> consecutive reads of the data match, you have stable data (so the reads
> should occur more often than updates) and can process the data
> transferred.
>
> OR, you could have the parent open a TCP/IP socket as a server, and
> pass the socket port number to the sub. The sub would then connect to
> that port and write the data. For bidirectional you could pass the
> parent port, and the sub's first action is to connect and pass a port
> that it will be monitoring.
>
> On a VMS system, the processes would connect to named "mailboxes"
> and use QIO operations to pass data between them.
>
> On an Amiga you'd use "message ports" (which operated somewhat
> similar to VMS mailboxes except that mailboxes had an independent
> existence, multiple processes can read or write to them -- message ports
> were readable by the creating process, but could have messages sent from
> anywhere; typically passing the message port [address of a linked list
> of messages] for replies). Or a higher level message port: an ARexx
> port.
>
> On a Windows NT class system, the win32 extensions allow access to
> Windows Named Pipes... Or maybe the Windows clipboard could be used...
> --
> Wulfraed Dennis Lee Bieber KD6MOG
> wlfr...@ix.netcom.com wulfr...@bestiaria.com
> HTTP://wlfraed.home.netcom.com/
> (Bestiaria Support Staff: web-a...@bestiaria.com)
> HTTP://www.bestiaria.com/
It depends on your judgment, of course. On a
simplistic level, using TCP/IP shouldn't be any more
work than what you'd do if you were reading and
writing files, especially if everything you're doing
is on the same box.
____________________________________________________________________________________
Never miss a thing. Make Yahoo your home page.
http://www.yahoo.com/r/hs
Yes. Consider this: If you were to run your calculation script from
the shell prompt [strongly recommended during testing], how would you
tell it the name of the file? Now look at the docs again.
>
> PS: both with mmpam and temp file you probably meant that I should
> hard code some as-weirdest-filename-as-possible two both programs but
> what if I run the computation several times?
That's mmap, not mmpam. No, Dennis didn't mean that you should hard
code a filename. Have a look at the tempfile module.
File arguments! Of course, totally forgot about them! Thanks a lot!
>
>
> > PS: both with mmpam and temp file you probably meant that I should
> > hard code some as-weirdest-filename-as-possible two both programs but
> > what if I run the computation several times?
>
> That's mmap, not mmpam. No, Dennis didn't mean that you should hard
> code a filename. Have a look at the tempfile module.
Now I recall I read I somewhere that network communication is so much
faster than disk access (especially on the same machine, as steve
howell suggested) so instead of file names I probably should find out
which port is open to use.
>
> There is a module that can generate temporary file names, though for
> this usage you could even do something to obtain the parent program
> process ID along with a timestamp and create a file name from all that.
> What are the odds that your "several times" would have the same clock
> time?
>
Quite small, I guess. However, perhaps I should better consider using
sockets.
Thanks!
ps: I really like how you format the paragraphs! :)
http://www.amk.ca/python/howto/sockets/
"Of the various forms of IPC (Inter Process Communication), sockets
are by far the most popular. On any given platform, there are likely
to be other forms of IPC that are faster, but for cross-platform
communication, sockets are about the only game in town."
Others have given you good suggestions; there's also this option which
may or may not be an appropriate tool for what you want to do:
http://NikitaTheSpider.com/python/shm/
--
Philip
http://NikitaTheSpider.com/
Whole-site HTML validation, link checking and more