Python 如何从主线程突然终止线程?
我有一个ftp服务器,它使用serve_forever命令。这个ftp服务是在一个线程中调用的,我想做的是,当我点击GUI上的停止按钮时,突然从主线程关闭该线程Python 如何从主线程突然终止线程?,python,multithreading,ftplib,Python,Multithreading,Ftplib,我有一个ftp服务器,它使用serve_forever命令。这个ftp服务是在一个线程中调用的,我想做的是,当我点击GUI上的停止按钮时,突然从主线程关闭该线程 import os import sqlite3 from pyftpdlib import ftpserver def main(): authorizer = ftpserver.DummyAuthorizer() #does something address = ('127.0.0.1', 10221)
import os
import sqlite3
from pyftpdlib import ftpserver
def main():
authorizer = ftpserver.DummyAuthorizer()
#does something
address = ('127.0.0.1', 10221)
ftpd = ftpserver.FTPServer(address, handler)
# start ftp server
ftpd.serve_forever()
if __name__ == '__main__':
main()
这是我调用ftp服务的主线程
def start_ftp(self):
self.ftp_status.setText("Running")
self.ftp_status.setStyleSheet("Background : light green")
#thread.start_new_thread( FtpService )
def stop_ftp(self):
self.ftp_status.setText("Stopped")
self.ftp_status.setStyleSheet("Background : red")
#what should i put here for the desired result
请帮助伙计们根据,关闭所有
应该“停止服务…”,所以永远服务
应该返回
将ftpd
对象存储在全局变量中(当前它是main
的本地变量),您可以从主线程调用close
或close\u all
根据您的评论,步骤如下:
ftpd=ftpserver.ftpserver(地址、处理程序)
参考ftpd。如果要停止为ftp连接提供服务,请关闭\u all()
你能将
ftpd
存储在公共可见的地方(即,在全局中)并从主线程调用close
或close\u all
吗?@无用:thanx为了快速响应,请给出一个如何执行上述给定答案的示例。你不想突然关闭线程。您想停止FTP服务。编写合理的多线程代码的第一步是考虑工作而不是执行工具。@DavidSchwartz:thanxtip@DavidSchwartz:您推荐用于python多线程编程的任何书籍或材料