设置
我用Python编写了一个相当复杂的软件(在Windows PC上).我的软件基本上启动了两个Python解释器shell.双击main.py文件时,第一个shell启动(我猜).在该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()
Run Code Online (Sandbox Code Playgroud)
在Main_thread启动TCP_thread和UDP_thread.虽然这些是单独的线程,但它们都在一个单独的Python shell中运行.
这Main_thread也启动了一个子进程.这是通过以下方式完成的:
p = subprocess.Popen(['python', mySubprocessPath], shell=True)
Run Code Online (Sandbox Code Playgroud)
从Python文档中,我了解到这个子进程在一个单独的Python解释器会话/ shell中同时运行(!).在Main_thread这个子完全是献给我的GUI.GUI TCP_thread为其所有通信启动a .
我知道事情变得有点复杂.因此,我总结了这个图中的整个设置:
关于这个设置,我有几个问题.我会在这里列出它们:
问题1 [已解决 ]
Python解释器一次只使用一个CPU核心来运行所有线程,这是真的吗?换句话说,Python interpreter session 1(从图中)是否会在一个CPU核心上运行所有3个线程(Main_thread,TCP_thread和UDP_thread)? …