前言一、概述二、示例
1.创建进程2、进程实现
前言
本文讲述在PyQt中使用进程传递参数的方法。
一、概述在PyQt中可以在槽中直接创建进程,进程创建后,窗体程序为父进程,创建的进程为子进程。在创建进程时,可以向进程直接传递参数。本文建立一个ftp server进程,并在创建时,向其传递IP地址。
二、示例 1.创建进程可以使用下列代码创建进程。
ip = self.GetHostIP()
self.ShowProgramCommunicationData("本机IP:" + ip)
self.ShowProgramCommunicationData("父进程:" + str(os.getpid()))
p = Process(target=RunFTPServer, args = (ip, ))
self.ShowProgramCommunicationData("ftp server进程已启动...")
p.start()
程序首先得到了本机的IP地址,然后利用Process函数创建进程,其第1个参数为目标进程,RunFTPServer为进程函数,第2个参数为传递的参数,可带多参,如果只有1个参数,应该参考本程序的写法,后面加逗号。
2、进程实现以下是进程实现的代码:
def RunFTPServer(ip):
print('Run child process %s...' % os.getpid())
# Instantiate a dummy authorizer for managing 'virtual' users
authorizer = DummyAuthorizer()
# Define a new user having full r/w permissions and a read-only
# anonymous user
#authorizer.add_user('user', '12345', '.', perm='elradfmwMT')
authorizer.add_anonymous(os.getcwd())
# Instantiate FTP handler class
handler = FTPHandler
handler.authorizer = authorizer
# Define a customized banner (string returned when client connects)
handler.banner = "pyftpdlib based ftpd ready."
# Specify a masquerade address and the range of ports to use for
# passive connections. Decomment in case you're behind a NAT.
#handler.masquerade_address = '151.25.42.11'
#handler.passive_ports = range(60000, 65535)
# Instantiate FTP server class and listen on 0.0.0.0:2121
address = (ip, 21)
server = FTPServer(address, handler)
# set a limit for connections
server.max_cons = 256
server.max_cons_per_ip = 5
# start ftp server
server.serve_forever()
此函数独立于窗体类,函数名与进程调用时的函数名一致,参数ip直接接收即可。



