
我用 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 中的子进

0

1
初生

2022-01-10 16:08:17

0
0/300
请先 登录 后发表评论~