On Thursday, October 25, 2018 at 9:12:56 AM UTC-7, Nils Bruin wrote:
>
> On Thursday, October 25, 2018 at 7:13:26 AM UTC-7, John Cremona wrote:
>>
>> sage: for res in apply([f,g]): print res; break
>> (((<function f at 0x7fb0537d6050>,), {}), 3^2 * 12248508919 *
>> 263416276811813669131602539468011)
>>
>> The first bit of the output shows that it is f which returns the result.
>> But I don't know if g stops working because of the 'break' -- does it?
>>
>> It probably does, but you might program it a little more explicitly.
If you change one of the functions to
def g(N):
while True:
continue
return 0
and do something like
@parallel(ncpus=4)
def apply(func):
return func(29038109543453453498320938204932840238210981)
you have a little better guarantee that there will be a dangling job, so
you can check with "top" if termination happens.
With
A=apply([f,g])
res=A.next()
I did see a dangling job. This was killed with
del A
As discussed before, that's not something you can formally rely on in
python.
As you can see here:
https://github.com/sagemath/sage/blob/6187d261eca3c980e575b53d1a31f580ba8cfdfd/src/sage/parallel/use_fork.py#L230
the generator function that produces the results does clean up after itself
(and indeed, "delete" of a generator function that is in operation does
trigger the "finally" clauses, as you'd home). It would be much better if
that clean-up could be triggered explicitly, but that would require
exposing a little more of the execution state on the "Parallel" object. It
would be a fairly straightforward and small for someone with good python
knowledge.
In fact, in Py3, the support for asynchronous operations and coroutines has
been MUCH improved, so at some point the parallel tools in sage should
probably be rewritten to cooperate better in that framework.
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.