| 
43 | 43 | import builtins  | 
44 | 44 | import errno  | 
45 | 45 | import io  | 
46 |  | -import locale  | 
47 | 46 | import os  | 
48 | 47 | import time  | 
49 |  | -import signal  | 
50 | 48 | import sys  | 
51 | 49 | import threading  | 
52 | 50 | import warnings  | 
@@ -138,6 +136,8 @@ def __init__(self, returncode, cmd, output=None, stderr=None):  | 
138 | 136 | 
 
  | 
139 | 137 |     def __str__(self):  | 
140 | 138 |         if self.returncode and self.returncode < 0:  | 
 | 139 | +            # Lazy import to improve module import time  | 
 | 140 | +            import signal  | 
141 | 141 |             try:  | 
142 | 142 |                 return "Command '%s' died with %r." % (  | 
143 | 143 |                         self.cmd, signal.Signals(-self.returncode))  | 
@@ -375,6 +375,8 @@ def _text_encoding():  | 
375 | 375 |     if sys.flags.utf8_mode:  | 
376 | 376 |         return "utf-8"  | 
377 | 377 |     else:  | 
 | 378 | +        # Lazy import to improve module import time  | 
 | 379 | +        import locale  | 
378 | 380 |         return locale.getencoding()  | 
379 | 381 | 
 
  | 
380 | 382 | 
 
  | 
@@ -1655,6 +1657,9 @@ def send_signal(self, sig):  | 
1655 | 1657 |             # Don't signal a process that we know has already died.  | 
1656 | 1658 |             if self.returncode is not None:  | 
1657 | 1659 |                 return  | 
 | 1660 | + | 
 | 1661 | +            # Lazy import to improve module import time  | 
 | 1662 | +            import signal  | 
1658 | 1663 |             if sig == signal.SIGTERM:  | 
1659 | 1664 |                 self.terminate()  | 
1660 | 1665 |             elif sig == signal.CTRL_C_EVENT:  | 
@@ -1759,6 +1764,9 @@ def _posix_spawn(self, args, executable, env, restore_signals,  | 
1759 | 1764 | 
 
  | 
1760 | 1765 |             kwargs = {}  | 
1761 | 1766 |             if restore_signals:  | 
 | 1767 | +                # Lazy import to improve module import time  | 
 | 1768 | +                import signal  | 
 | 1769 | + | 
1762 | 1770 |                 # See _Py_RestoreSignals() in Python/pylifecycle.c  | 
1763 | 1771 |                 sigset = []  | 
1764 | 1772 |                 for signame in ('SIGPIPE', 'SIGXFZ', 'SIGXFSZ'):  | 
@@ -2208,9 +2216,13 @@ def send_signal(self, sig):  | 
2208 | 2216 |         def terminate(self):  | 
2209 | 2217 |             """Terminate the process with SIGTERM  | 
2210 | 2218 |             """  | 
 | 2219 | +            # Lazy import to improve module import time  | 
 | 2220 | +            import signal  | 
2211 | 2221 |             self.send_signal(signal.SIGTERM)  | 
2212 | 2222 | 
 
  | 
2213 | 2223 |         def kill(self):  | 
2214 | 2224 |             """Kill the process with SIGKILL  | 
2215 | 2225 |             """  | 
 | 2226 | +            # Lazy import to improve module import time  | 
 | 2227 | +            import signal  | 
2216 | 2228 |             self.send_signal(signal.SIGKILL)  | 
0 commit comments