返回顶部

我用 Python(在 Windows PC 上)编写了一个相当复杂的软件。我的软件基本上启动了两个 Python 解释器 shell。当您双击main.py文件时,第一个 shell 会启动(我想)。在该外壳中,其他线程以下列方式启动: # Start TCP_thread TCP_thread = threading.Thread(name = 'TCP_loop', target = TCP_loop, args = (TCPsock,)) TCP_thread.start() # Start UDP_thread UDP_thread = threading.Thread(name = 'UDP_loop', target = UDP_loop, args = (UDPsock,)) TCP_thread.start() 在Main_thread启动TCP_thread和UDP_thread。尽管这些是单独的线程,但它们都在一个 Python shell 中运行。 该Main_thread还启动子。这是通过以下方式完成的: p = subprocess.Popen(['python', mySubprocessPath], shell=True) 从 Python 文档中,我了解到这个子进程在单独的 Python 解释器会话/shell 中同时运行(!)。在Main_thread这个子完全是献给我的GUI。GUITCP_thread为其所有通信启动一个。 我知道事情变得有点复杂。因此,我在此图中总结了整个设置: 在此处输入图像描述 我有几个关于这个设置的问题。我将在这里列出它们: 问题1 [已解决] Python 解释器一次只使用一个 CPU 内核来运行所有线程是真的吗?换句话说,将Python interpreter session 1(从图)运行所有3个线程(Main_thread,TCP_thread并UDP_thread在一个CPU核心)? 回答:是的,这是真的。GIL(全局解释器锁)确保所有线程一次在一个 CPU 内核上运行。 问题2 [尚未解决] 我有办法跟踪它是哪个 CPU 内核吗? 问题3 [部分解决] 对于这个问题,我们忘记了线程,而是专注于 Python 中的子进

正在加载...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152