![](/img/trans.png)
[英]How to change a python thread name from inside the thread on Windows?
[英]How to know the name of the thread inside it
我使用 for 循环创建了多个线程,我需要读取线程内的线程名称。 我怎么做? 我使用 threading.Thread.name 但返回线程 object 的一些 memory 地址。这是我的代码的一部分:
def catch_sharp_fall(update, context, x):
global access_token, watchlist, bot, chat_id, market_open_alert, nifty, bot_reset, stop_catch_sharp_fall, \
kite_api_key
ins_code = x
kite = KiteConnect(kite_api_key)
kite.set_access_token(access_token)
kws = KiteTicker(kite_api_key, access_token)
def on_ticks(ws, ticks):
logging.debug("Ticks: {}".format(ticks))
def on_connect(ws, response):
ws.subscribe([ins_code])
ws.set_mode(ws.MODE_FULL, [ins_code])
def on_close(ws, code, reason):
ws.stop()
kws.on_ticks = on_ticks
kws.on_connect = on_connect
kws.on_close = on_close
kws.connect(threaded=True)
while True:
def on_ticks(ws, ticks):
feed_data(ticks)
def feed_data(ticks):
list_of_threads_running = [i.name for i in threading.enumerate()]
logging.info(f'list of threads running {list_of_threads_running}')
# update.message.reply_text(f'<b>I am the stock {ins_code}</b>', parse_mode='HTML')
logging.info(f'{threading.Thread.name}')
kws.on_ticks = on_ticks
for x in watchlist:
t = threading.Thread(name=str(x), target=catch_sharp_fall, args=(update, context, x))
t.setDaemon(True)
t.start()
当您执行threading.Thread.name
时,您是在Thread
类型本身上检索name
,而不是在当前线程的线程 object 上检索名称。 你需要在当前线程object上查一下:
threading.current_thread().name
您可以使用threading.current_thread().name
、 t1.name
和t2.name
,如下所示:
import threading
def test1():
print(threading.current_thread().name) # "Thread-1"
def test2():
print(threading.current_thread().name) # "test_thread"
t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2, name="test_thread")
# Thread name
t1.start()
t2.start()
t1.join()
t2.join()
print(t1.name) # "Thread-1"
print(t2.name) # "test_thread"
print(threading.current_thread().name) # "MainThread"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.