SocketServer multiprocessing.Process在不调用start()的情况下启动 [英] Socketserver multiprocessing.Process is starting without calling start()
本文介绍了SocketServer multiprocessing.Process在不调用start()的情况下启动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的rpi上的Python脚本有问题.如果创建流程对象,它将自动启动并阻止其他所有内容.我希望它在后台运行,并能够通过调用start()
方法来启动它.
I have a problem with a Python script on my rpi. If I create a process object, it starts automatically and blocks everything else. I want it to run in the background, and to be able to start it by calling the start()
method.
network_manager.py:
network_manager.py:
import socketserver
class NetworkManagerHandler(socketserver.StreamRequestHandler):
def handle(self):
print("Got some Data!")
class NetworkManagerServer(socketserver.ForkingMixIn, socketserver.TCPServer):
pass
core.py:
import multiprocessing
from network_manager import NetworkManagerServer, NetworkManagerHandler
HOST, PORT = "100.0.0.1", 11891
network_manager = NetworkManagerServer((HOST, PORT), NetworkManagerHandler)
network_manager_process =
multiprocessing.Process(target=network_manager.serve_forever())
# !-> Program is blocking here, but the Server is working. <-!
network_manager_process.daemon = True
network_manager_process.start()
print("Networkmanager is running. (%s:%s)" % (HOST, PORT))
# network_manager.shutdown()
谢谢.
推荐答案
此:
network_manager_process =
multiprocessing.Process(target=network_manager.serve_forever())
应该是这样
network_manager_process =
multiprocessing.Process(target=network_manager.serve_forever)
您实际上并不想调用serve_forever
,只想将函数传递给Process
对象.
You don't actually want to call serve_forever
, you just want to pass the function to the Process
object.
这篇关于SocketServer multiprocessing.Process在不调用start()的情况下启动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文