2017-03-27 4 views
1

나는 2 개의 파이썬 스크립트를 가지고있다. 첫 번째는 Flask 서버이고 두 번째는 NRF24L01 수신기/송신기 (On Raspberry Pi3) 스크립트입니다. 두 스크립트가 동시에 실행됩니다. 이 두 스크립트 사이에 변수 (변수가 일정하지 않음)를 전달하려고합니다. 가장 간단한 방법으로 어떻게 할 수 있습니까?Python 스크립트 간의 통신

답변

1

파이썬 RPC 설정은 어떻습니까? 나는. 각 스크립트에서 서버를 실행하고 각 스크립트는 서로 원격 프로 시저 호출을 호출하는 클라이언트 일 수도 있습니다.

https://docs.python.org/2/library/simplexmlrpcserver.html#simplexmlrpcserver-example

+0

감사합니다. 나는 시도 할 것이다. C, C++을 사용한다면 포인터를 사용하여 포인터를 사용할 수 있습니까? 하지만 파이썬은 포인터를 지원하지 않습니다. 그렇죠? 또 다른 아이디어는 두 스크립트를 병합하는 것이지만 느린 프로그램이 생길 까봐 걱정됩니까? –

+0

왜 쇼 프로그램을 가질 것이라고 생각합니까? 어떤 수준의 응답 성이 필요합니까? – Sush

0

나는 Sush의 제안에 완벽한 솔루션을 내놓고을 제안하고 싶습니다. 지난 며칠 동안 저는 두 프로세스가 별도로 실행되는 문제를 해결하려고 노력했습니다. (제 경우에는 동일한 시스템에서). 많은 솔루션 (소켓, RPC, 간단한 RPC 또는 다른 서버)이 있지만 모두 제한이 있습니다. 나에게 효과가 있었던 것은 SimpleXMLRPCServer 모듈이었다. 모든면에서 직접 소켓 작동보다 빠르고, 안정적이며 우수합니다. 깔끔하게 클라이언트에서 닫을 수 있습니다 완전 기능 서버는 짧게 :

from SimpleXMLRPCServer import SimpleXMLRPCServer 
quit_please = 0 

s = SimpleXMLRPCServer(("localhost", 8000), allow_none=True) #allow_none enables use of methods without return 
s.register_introspection_functions() #enables use of s.system.listMethods() 
s.register_function(pow) #example of function natively supported by Python, forwarded as server method 

# Register a function under a different name 
def example_method(x): 
    #whatever needs to be done goes here 
    return 'Enterd value is ', x 
s.register_function(example_method,'example') 

def kill(): 
    global quit_please 
    quit_please = 1 
    #return True 
s.register_function(kill) 

while not quit_please: 
    s.handle_request() 

내 주요 도움이 된 문서는 here 발견 십오년이었다.

또한 많은 자습서에서는을 사용합니다. 이는 실제로 멀티 스레딩을하지 않고 중단해야하는 고통입니다.

import xmlrpclib 
serv = xmlrpclib.ServerProxy('http://localhost:8000') 

예 :

은 당신이 할 필요가 기본적으로 2 줄 수있는 서버와 통신 할 수

>>> import xmlrpclib 
>>> serv = xmlrpclib.ServerProxy('http://localhost:8000') 
>>> serv.example('Hello world') 
'Enterd value is Hello world' 

그리고 바로 그거야! 완벽한 기능, 빠르고 안정적인 통신. 나는 항상 개선해야 할 부분이 있음을 알고 있지만 대부분의 경우이 접근법은 완벽하게 작동합니다.