From: Kenworthy, E. <Edw...@ma...> - 2002-07-23 07:01:12
|
Hi =20 re thread safety, I suspect the biggest problem, even if everything = else works, is going to be synching - each bit of python code can access the = same set of "local" variables as they're all running in the same = interpreter. As to your second question, I manually cache my compiled (exec()) code and __call__ it when ever I need to run some of it. I don't believe Jython = does any caching under the covers - but I could be wrong. =20 Edward -----Original Message----- From: Yanick Duchesne [mailto:ydu...@ne...] Sent: 22 July 2002 16:56 To: jyt...@so... Subject: [Jython-users] questions about Jython As a Jython newbie, I have a few questions: =20 1) PythonInterpreter and thread-safety =20 Can a single PythonInterpreter be used by multiple threads? I mean, = could I keep an PythonInterpreter in a singleton for example, and have it = interpret py files for multiple simultaneous threads? =20 2) PythonInterpreter and dynamic byte-code =20 Is the transformation of a jython source file to byte-code automatic whenever the eval(...) or exec(...) methods are called? Is the = byte-code systematically cached so that a second invocation (for a given script) = will be spared the source-to-byte-code generation overhead? What are the exceptions to the rule that one should be aware of? =20 The public void execfile(java.io.InputStream s) method of = PythonInterpreter does not take any file name; how does the interpreter manage the = caching in such a case - how does it now a given source has already been = interpreted? =20 3)=20 =20 Yanick Duchesne Software Architect Architecte d'applications Newtrade Technologies Inc. ydu...@ne... <mailto:ydu...@ne...>=20 tel +1 514 286 8180 x 226 <http://www.newtradetech.com/>=20 _____ =20 If you have received this message in error, please notify the sender immediately and delete the original without making a copy, disclosing = its contents or taking any action based thereon. Si vous avez re=E7u ce message par erreur, veuillez en aviser = imm=E9diatement le signataire et effacer l'original, sans en tirer de copie, en d=E9voiler = le contenu ni prendre quelque mesure fond=E9e sur celui-ci. =20 |
From: Kenworthy, E. <Edw...@ma...> - 2002-07-23 07:02:20
|
Actually further to my previous comment, I am about 90% certain Jython doesn't cache as I sometimes re-load externally modified Jython scripts = and they get correctly re-loaded (ie I see the changes) if Jython cached = them, then I wouldn't. -----Original Message----- From: Yanick Duchesne [mailto:ydu...@ne...] Sent: 22 July 2002 16:56 To: jyt...@so... Subject: [Jython-users] questions about Jython As a Jython newbie, I have a few questions: =20 1) PythonInterpreter and thread-safety =20 Can a single PythonInterpreter be used by multiple threads? I mean, = could I keep an PythonInterpreter in a singleton for example, and have it = interpret py files for multiple simultaneous threads? =20 2) PythonInterpreter and dynamic byte-code =20 Is the transformation of a jython source file to byte-code automatic whenever the eval(...) or exec(...) methods are called? Is the = byte-code systematically cached so that a second invocation (for a given script) = will be spared the source-to-byte-code generation overhead? What are the exceptions to the rule that one should be aware of? =20 The public void execfile(java.io.InputStream s) method of = PythonInterpreter does not take any file name; how does the interpreter manage the = caching in such a case - how does it now a given source has already been = interpreted? =20 3)=20 =20 Yanick Duchesne Software Architect Architecte d'applications Newtrade Technologies Inc. ydu...@ne... <mailto:ydu...@ne...>=20 tel +1 514 286 8180 x 226 <http://www.newtradetech.com/>=20 _____ =20 If you have received this message in error, please notify the sender immediately and delete the original without making a copy, disclosing = its contents or taking any action based thereon. Si vous avez re=E7u ce message par erreur, veuillez en aviser = imm=E9diatement le signataire et effacer l'original, sans en tirer de copie, en d=E9voiler = le contenu ni prendre quelque mesure fond=E9e sur celui-ci. =20 |
From: Andreas K. <an...@ko...> - 2002-07-25 08:23:38
|
Am Die, 2002-07-23 um 08.59 schrieb Kenworthy, Edward: > Actually further to my previous comment, I am about 90% certain Jython > doesn't cache as I sometimes re-load externally modified Jython scripts and > they get correctly re-loaded (ie I see the changes) if Jython cached them, > then I wouldn't. Well, that isn't any proof. CPython caches in .pyc files, and it still reload externally modified scripts. The point is, that if the modification time of the cached object is earlier than the original object, it has to be rebuild. Actually it seems to do caching: andreas@vaio2:~> cd t andreas@vaio2:~/t> ls -l insgesamt 4 -rw-r--r-- 1 andreas andreas 22 Jul 25 09:59 test.py andreas@vaio2:~/t> python -c "import test" andreas@vaio2:~/t> ls -l insgesamt 8 -rw-r--r-- 1 andreas andreas 22 Jul 25 09:59 test.py -rw-r--r-- 1 andreas andreas 191 Jul 25 10:00 test.pyc andreas@vaio2:~/t> jython -c "import test" andreas@vaio2:~/t> ls -l insgesamt 12 -rw-r--r-- 1 andreas andreas 1752 Jul 25 10:00 test$py.class -rw-r--r-- 1 andreas andreas 22 Jul 25 09:59 test.py -rw-r--r-- 1 andreas andreas 191 Jul 25 10:00 test.pyc andreas@vaio2:~/t> I'd say, it does caching only if it can write the directory the class resides in. Andreas |