[IronPython] importing on different threads

Kamil Dworakowski kamil at dworakowski.name
Thu Aug 21 10:23:22 PDT 2008


Thanks, we will try manual locking.

On Thu, Aug 21, 2008 at 3:42 PM, Curt Hagenlocher <curt at hagenlocher.org>wrote:

> As things stand now, I think you'll need either some kind of manual locking
> or you'll need a different heuristic to tell you whether or not the module
> has finished loading.
> On Thu, Aug 21, 2008 at 7:20 AM, Kamil Dworakowski <kamil at dworakowski.name
> > wrote:
>
>> We want Resolve One to start quicker. We have found large speedups by
>> delaying importing of some modules.
>>
>> This is implemented by moving some import statements into bodies of
>> methods and function, so that the modules are imported lazily when they are
>> actually needed. Since Resolver One runs many threads clashes happen.
>>
>> Kamil
>>
>>
>>
>> On Thu, Aug 21, 2008 at 1:53 PM, Curt Hagenlocher <curt at hagenlocher.org>wrote:
>>
>>> What's the scenario under which you want to do this? Is there a fixed set
>>> of modules being imported by your application or is the list not known until
>>> runtime?
>>>
>>> The behavior you describe with respect to sys.modules is identical to
>>> that in CPython.  In fact, it's required in order to resolve circular
>>> imports.  Without it, if module A were to import module B and module B
>>> imported module A, you'd end up with infinite recursion.
>>>
>>> Where IronPython is "worse" than CPython in this regard is that it takes
>>> us longer to import a module.  This increases the chance for a collision in
>>> an application where modules may be imported from multiple threads.
>>>
>>>   On Thu, Aug 21, 2008 at 5:11 AM, Kamil Dworakowski <
>>> kamil at dworakowski.name> wrote:
>>>
>>>>   We are trying parallel imports, which somtimes fail with ImportError
>>>> (ipy 1.1.1). This happens when one thread attempts to import a module which
>>>> is being imported on a different thread. The number of such risky imports is
>>>> not high, and we deal with this by catching the exception and retrying.
>>>>
>>>> What do you think? Is it a wrong thing to do? I would like to avoid
>>>> locking.
>>>>
>>>> I have just glimpsed over the IronPython source. Does the problem here
>>>> is that when one thread starts to import a module it inserts an emty entry
>>>> into sys.modules, thus other threads get None (or ImportError when using
>>>> "import from" statement) until the module is fully imported?
>>>>
>>>> Kamil Dworakowski
>>>> Resolver Systems Ltd
>>>>
>>>> _______________________________________________
>>>> Users mailing list
>>>> Users at lists.ironpython.com
>>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.ironpython.com
>>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>>
>>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>>
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ironpython.com/pipermail/users-ironpython.com/attachments/20080821/bef21660/attachment-0001.htm>


More information about the Users mailing list