@@ -107,8 +107,8 @@ def __call__(self, f):
107
107
108
108
sage: from sage.parallel.decorate import Parallel
109
109
sage: p = Parallel()
110
- sage: f = x^2 - 1 # optional - sage.symbolic
111
- sage: p(f) # optional - sage.symbolic
110
+ sage: f = x^2 - 1 # needs sage.symbolic
111
+ sage: p(f) # needs sage.symbolic
112
112
<sage.parallel.decorate.ParallelFunction object at ...>
113
113
114
114
sage: P = sage.parallel.decorate.Parallel()
@@ -342,7 +342,7 @@ def parallel(p_iter='fork', ncpus=None, **kwds):
342
342
343
343
sage: @parallel(ncpus=3, timeout=10)
344
344
....: def fac(n): return factor(2^n-1)
345
- sage: for X, Y in sorted(list(fac([101,119,151,197,209]))): print((X,Y)) # optional - sage.libs.pari
345
+ sage: for X, Y in sorted(list(fac([101,119,151,197,209]))): print((X,Y)) # needs sage.libs.pari
346
346
(((101,), {}), 7432339208719 * 341117531003194129)
347
347
(((119,), {}), 127 * 239 * 20231 * 131071 * 62983048367 * 131105292137)
348
348
(((151,), {}), 18121 * 55871 * 165799 * 2332951 * 7289088383388253664437433)
@@ -531,35 +531,36 @@ def fork(f=None, timeout=0, verbose=False):
531
531
We illustrate that the state of the pexpect interface is not altered by
532
532
forked functions (they get their own new pexpect interfaces!)::
533
533
534
- sage: gp.eval('a = 5') # optional - sage.libs.pari
534
+ sage: # needs sage.libs.pari
535
+ sage: gp.eval('a = 5')
535
536
'5'
536
- sage: @fork() # optional - sage.libs.pari
537
+ sage: @fork()
537
538
....: def g():
538
539
....: gp.eval('a = 10')
539
540
....: return gp.eval('a')
540
- sage: g() # optional - sage.libs.pari
541
+ sage: g()
541
542
'10'
542
- sage: gp.eval('a') # optional - sage.libs.pari
543
+ sage: gp.eval('a')
543
544
'5'
544
545
545
546
We illustrate that the forked function has its own pexpect
546
547
interface::
547
548
548
- sage: gp.eval('a = 15') # optional - sage.libs.pari
549
+ sage: gp.eval('a = 15') # needs sage.libs.pari
549
550
'15'
550
- sage: @fork() # optional - sage.libs.pari
551
+ sage: @fork()
551
552
....: def g(): return gp.eval('a')
552
- sage: g() # optional - sage.libs.pari
553
+ sage: g() # needs sage.libs.pari
553
554
'a'
554
555
555
556
We illustrate that segfaulting subprocesses are no trouble at all::
556
557
557
- sage: cython('def f(): print(<char*>0)') # optional - sage.misc.cython
558
+ sage: cython('def f(): print(<char*>0)') # needs sage.misc.cython
558
559
sage: @fork
559
560
....: def g():
560
561
....: os.environ["CYSIGNALS_CRASH_NDEBUG"]="yes" # skip enhanced backtrace (it is slow)
561
562
....: f()
562
- sage: print("this works"); g() # optional - sage.misc.cython
563
+ sage: print("this works"); g() # needs sage.misc.cython
563
564
this works...
564
565
<BLANKLINE>
565
566
------------------------------------------------------------------------
0 commit comments