返回顶部

Python编程

2517浏览

1393内容

我用 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