Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一文件中运行服务器和客户端-python_Python_Multiprocessing - Fatal编程技术网

在同一文件中运行服务器和客户端-python

在同一文件中运行服务器和客户端-python,python,multiprocessing,Python,Multiprocessing,我正在使用tftpy,需要创建一个服务器,然后是一个客户端来下载/上传一些文件,然后我可以关闭服务器 我曾考虑使用多处理来实现这一点,但我不知道如何优雅地关闭服务器。最后一种方法是使用terminate(),但可能有一种更好的方法(可能是一种更简单的方法,不使用多处理)。我也知道multiprocessing.Event(),但我不知道run_sv()方法将如何保持侦听 代码如下: import multiprocessing import tftpy def run_sv(): na

我正在使用tftpy,需要创建一个服务器,然后是一个客户端来下载/上传一些文件,然后我可以关闭服务器

我曾考虑使用多处理来实现这一点,但我不知道如何优雅地关闭服务器。最后一种方法是使用terminate(),但可能有一种更好的方法(可能是一种更简单的方法,不使用多处理)。我也知道multiprocessing.Event(),但我不知道run_sv()方法将如何保持侦听

代码如下:

import multiprocessing
import tftpy

def run_sv():
    name = multiprocessing.current_process().name
    print name, 'Starting sv'
    server = tftpy.TftpServer('./rootf')
    server.listen('0.0.0.0', 69)
    print name, 'Exiting sv'

def run_cl():
    name = multiprocessing.current_process().name
    print name, 'Starting cl'
    client = tftpy.TftpClient('127.0.0.1', 69)
    client.download('aaa.txt', './downf/zzz.txt')
    print name, 'Exiting cl'

if __name__ == '__main__':
    service = multiprocessing.Process(name='my_sv', target=run_sv)
    worker_1 = multiprocessing.Process(name='my_cl', target=run_cl)

    service.start()
    worker_1.start()
输出:

my_sv Starting sv
my_cl Starting cl
my_cl Exiting cl
当然,它挂在那里。

试试这个:

service.start()
worker_1.start()
worker_1.join()
service.terminate()

在run_sv结束之前尝试在服务器上调用.close()?服务器往往会无限期运行,您应该找到一种方法,在客户端完成其workno close()方法后将其关闭。服务器开始监听,但没有回复“promt”。用terminate()终止进程pid是一种替代方法,但并不优雅。它当时是挂在主进程中等待客户端还是服务器?