mirror of
https://github.com/python/cpython.git
synced 2025-11-01 22:21:35 +00:00
Issue #26939: Add the support.setswitchinterval() function to fix
test_functools hanging on the Android armv7 qemu emulator.
This commit is contained in:
parent
0d5742dec0
commit
7522ef402c
3 changed files with 23 additions and 1 deletions
|
|
@ -93,6 +93,7 @@
|
||||||
"check__all__", "requires_android_level", "requires_multiprocessing_queue",
|
"check__all__", "requires_android_level", "requires_multiprocessing_queue",
|
||||||
# sys
|
# sys
|
||||||
"is_jython", "is_android", "check_impl_detail", "unix_shell",
|
"is_jython", "is_android", "check_impl_detail", "unix_shell",
|
||||||
|
"setswitchinterval",
|
||||||
# network
|
# network
|
||||||
"HOST", "IPV6_ENABLED", "find_unused_port", "bind_port", "open_urlresource",
|
"HOST", "IPV6_ENABLED", "find_unused_port", "bind_port", "open_urlresource",
|
||||||
# processes
|
# processes
|
||||||
|
|
@ -2547,3 +2548,18 @@ def missing_compiler_executable(cmd_names=[]):
|
||||||
continue
|
continue
|
||||||
if spawn.find_executable(cmd[0]) is None:
|
if spawn.find_executable(cmd[0]) is None:
|
||||||
return cmd[0]
|
return cmd[0]
|
||||||
|
|
||||||
|
|
||||||
|
_is_android_emulator = None
|
||||||
|
def setswitchinterval(interval):
|
||||||
|
# Setting a very low gil interval on the Android emulator causes python
|
||||||
|
# to hang (issue #26939).
|
||||||
|
minimum_interval = 1e-5
|
||||||
|
if is_android and interval < minimum_interval:
|
||||||
|
global _is_android_emulator
|
||||||
|
if _is_android_emulator is None:
|
||||||
|
_is_android_emulator = (subprocess.check_output(
|
||||||
|
['getprop', 'ro.kernel.qemu']).strip() == b'1')
|
||||||
|
if _is_android_emulator:
|
||||||
|
interval = minimum_interval
|
||||||
|
return sys.setswitchinterval(interval)
|
||||||
|
|
|
||||||
|
|
@ -1322,7 +1322,7 @@ def clear():
|
||||||
f.cache_clear()
|
f.cache_clear()
|
||||||
|
|
||||||
orig_si = sys.getswitchinterval()
|
orig_si = sys.getswitchinterval()
|
||||||
sys.setswitchinterval(1e-6)
|
support.setswitchinterval(1e-6)
|
||||||
try:
|
try:
|
||||||
# create n threads in order to fill cache
|
# create n threads in order to fill cache
|
||||||
threads = [threading.Thread(target=full, args=[k])
|
threads = [threading.Thread(target=full, args=[k])
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,12 @@ Library
|
||||||
- Issue #28847: dbm.dumb now supports reading read-only files and no longer
|
- Issue #28847: dbm.dumb now supports reading read-only files and no longer
|
||||||
writes the index file when it is not changed.
|
writes the index file when it is not changed.
|
||||||
|
|
||||||
|
Tests
|
||||||
|
-----
|
||||||
|
|
||||||
|
- Issue #26939: Add the support.setswitchinterval() function to fix
|
||||||
|
test_functools hanging on the Android armv7 qemu emulator.
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 3.6.0 release candidate 1
|
What's New in Python 3.6.0 release candidate 1
|
||||||
==============================================
|
==============================================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue