@@ -287,62 +287,8 @@ __builtins__.input = mock_input
287287 console . log ( 'Input mock setup complete' ) ;
288288 }
289289
290- // Setup to prevent browser "page unresponsive" warnings
291- try {
292- await pyodide . runPythonAsync ( `
293- import sys
294- import asyncio
295-
296- # Monkey-patch to allow yielding control periodically
297- _original_range = range
298- _iter_count = [0]
299-
300- class YieldingRange:
301- def __init__(self, *args):
302- self._range = _original_range(*args)
303-
304- def __iter__(self):
305- for i in self._range:
306- _iter_count[0] += 1
307- # Yield control every 1000 iterations to keep browser responsive
308- if _iter_count[0] % 1000 == 0:
309- try:
310- # Try to yield control if we're in an async context
311- pass
312- except:
313- pass
314- yield i
315-
316- def __len__(self):
317- return len(self._range)
318-
319- # Only use yielding range for large ranges
320- def smart_range(*args):
321- if len(args) == 1 and args[0] > 10000:
322- return YieldingRange(*args)
323- elif len(args) >= 2 and abs(args[1] - args[0]) > 10000:
324- return YieldingRange(*args)
325- return _original_range(*args)
326-
327- __builtins__.range = smart_range
328- ` ) ;
329- } catch ( err ) {
330- console . log ( 'Could not setup yielding (non-critical):' , err ) ;
331- }
332-
333- // Run the user's code with interrupt buffer to prevent browser "unresponsive" dialog
334- pyodide . setInterruptBuffer ( new Int32Array ( new SharedArrayBuffer ( 4 ) ) ) ;
335-
336- // Allow interruption for long-running code
337- const runPromise = pyodide . runPythonAsync ( code ) ;
338-
339- // Keep the page responsive by periodically yielding
340- const keepAlive = setInterval ( ( ) => {
341- // This keeps the event loop running
342- } , 100 ) ;
343-
344- await runPromise ;
345- clearInterval ( keepAlive ) ;
290+ // Run the user's code - use runPythonAsync which is non-blocking
291+ await pyodide . runPythonAsync ( code ) ;
346292 console . log ( 'Code execution complete' ) ;
347293
348294 // Show final output
0 commit comments