python3 (iperf3)과 함께 사용해야하는 라이브러리 중 하나는 'run'라이브러리가 기본 스레드에서 실행 된 이어야한다는 것입니다.멀티 프로세스를 사용하는 새로운 프로세스가 메인 스레드에서 실행될 수 있습니까?
나는 멀티 프로세싱 라이브러리와 새로운 프로세스 나 프로세스의 메인 쓰레드를 사용하게됩니다 있는지 확인하기 위해 몇 가지 검사를 수행하고있어하지만 조각과 나는 새로운 '메인 스레드'에 대한 가질 수 없습니다 위 보인다 과정.
분기 프로세스를 새 프로세스의 주 스레드로 실행하는 권장 방법은 무엇입니까? 그게 가능하니? Celery와 같은 시스템이 이것을 도와 줄 것입니까? 나는 이것을 플라스크 (Flask) 응용 프로그램에서 실행할 계획입니다.
감사합니다.
#! /usr/bin/python3
import threading
import multiprocessing as mp
def mp_call():
try:
print("mp_call is mainthread? {}".format(isinstance(threading.current_thread(), threading._MainThread)))
except Exception as e:
print('create iperf e:{}'.format(e))
def thread_call():
try:
print("thread_call is mainthread? {}".format(isinstance(threading.current_thread(), threading._MainThread)))
p = mp.Process(target=mp_call, args=[])
p.daemon = False
p.start()
p.join()
print('Process ended')
except Exception as e:
print('thread e:{}'.format(e))
t = threading.Thread(target=thread_call)
t.daemon = False
t.start()
t.join()
print('Thread ended')
플라스크 응용 프로그램에서 다중 처리를 사용하지 마십시오. WSGI 서버로 인해 모든 종류의 문제가 발생합니다. 서버에는 자체 프로세스 및 스레딩 시스템이 있습니다. –
@KlausD. 무엇을 사용 하시겠습니까? 셀러리? – h3ct0r
@georgexsh, 지금은 iperf3 모듈을 약간 수정했고 셀러리를 내 프로젝트에 통합하여 이러한 작업을 실행하고 모든 것이 실행될 때보고합니다! – h3ct0r