我有以下代码来比较用户输入
import thread,sys
if(username.get_text() == 'xyz' and password.get_text()== '123' ):
thread.start_new_thread(run,())
def run():
print "running client"
start = datetime.now().second
while True:
try:
host ='localhost'
port = 5010
time = abs(datetime.now().second-start)
time = str(time)
print time
client = socket.socket()
client.connect((host,port))
client.send(time)
except socket.error:
pass
如果我只是调用函数run()它可以工作但是当我尝试创建一个线程来运行这个函数时,由于某种原因没有创建线程并且run()函数没有被执行我无法找到任何错误..
提前致谢...
答案 0 :(得分:3)
你真的应该使用threading
模块而不是thread
。
例如:
import thread
import time
def run():
time.sleep(2)
print('ok')
thread.start_new_thread(run, ())
- >这会产生:
Unhandled exception in thread started by
sys.excepthook is missing
lost sys.stderr
其中:
import threading
import time
def run():
time.sleep(2)
print('ok')
t=threading.Thread(target=run)
t.daemon = True # set thread to daemon ('ok' won't be printed in this case)
t.start()
按预期工作。如果你不想让解释器等待线程,只需在生成的线程上设置daemon = True *。
*编辑:在示例中添加了
答案 1 :(得分:0)
thread
是一个低级库,您应该使用threading。
from threading import Thread
t = Thread(target=run, args=())
t.start()