用Wing IDE调试多线程Python

用Wing IDE调试多线程Python,python,multithreading,debugging,ide,Python,Multithreading,Debugging,Ide,我正在用WingIDE调试一个多线程Python程序 当我按下暂停按钮时,它只暂停一个线程。我已经尝试了十次,它总是暂停同一个线程,在我的例子中称为“ThreadTimer线程”,而其他线程继续运行。我想暂停这些其他线程,以便我可以与他们一步。我该怎么做?我不知道Wing IDE是否可以进行多线程调试 无论您对哪个线程具有此功能感兴趣,运行Python代码的所有线程都将停止(默认情况下,即,除非您特意实现不同的效果)。您认为运行非Python代码的线程没有停止运行(I/O,比如说:这会带来自身的

我正在用WingIDE调试一个多线程Python程序


当我按下暂停按钮时,它只暂停一个线程。我已经尝试了十次,它总是暂停同一个线程,在我的例子中称为“ThreadTimer线程”,而其他线程继续运行。我想暂停这些其他线程,以便我可以与他们一步。我该怎么做?

我不知道Wing IDE是否可以进行多线程调试


无论您对哪个线程具有此功能感兴趣,运行Python代码的所有线程都将停止(默认情况下,即,除非您特意实现不同的效果)。您认为运行非Python代码的线程没有停止运行(I/O,比如说:这会带来自身的问题),或者您正在做一些其他事情,而不是在原始安装中运行,而没有文档描述的只暂停部分线程的调整…?

我只是在创建线程时命名线程

示例线程:

import threading
from threading import Thread

#...
client_address = '192.168.0.2'
#...

thread1 = Thread(target=thread_for_receiving_data,
                         args=(connection, q, rdots),
                         name='Connection with '+client_address,
                         daemon=True)
thread1.start()
然后,您可以始终从线程内部访问该名称

print(threading.currentThread())
sys.stdout.flush() #this is essential to print before the thread is completed
您还可以列出具有特定名称的所有线程

for at in threading.enumerate():
    if at.getName().split(' ')[0] == 'Connection':
        print('\t'+at.getName())
一个过程也可以做类似的事情

示例过程:

import multiprocessing


process1 = multiprocessing.Process(target=function,
                         name='ListenerProcess',
                         args=(queue, connections, known_clients, readouts),
                         daemon=True)
process1.start()
对于进程,它甚至更好,因为您可以从外部根据特定进程的名称终止该进程

for child in multiprocessing.active_children():
    if child.name == 'ListenerProcess':
        print('Terminating:', child, 'PID:', child.pid)
        child.terminate()
        child.join()

来自Wing文档:“Wing的调试器提供了一个强大的工具集,用于快速定位和修复单线程或多线程Python代码中的错误。”不幸的是,我在文档中找不到我的问题的答案。我查看了Winpdb,太棒了!这是一个原始的安装,但我在wxPython工作。这是否意味着我不能停止wxPython线程?如果我正确理解你的意思,我相信你不能停止GUI线程(这会使整个GUI没有响应)。我不是指Wing的GUI线程,我是指我程序的GUI。让它没有反应有什么问题?哦,我误解你了。只要它在请求线程停止时运行Python代码(与大量的WxWistGoogs/Wxpython构成的C++代码相反),它应该停止,GUI或GUI。您提到的WXPython提醒我发现了DOC,我假设您可以调试其提供的DEMO.PY W/O问题;如果您调整它以添加一些最小的线程,您能非常简单地重现您的问题吗?