python 다 중 프로 세 스 구현 프로 세 스 간 통신 인 스 턴 스
4230 단어 python다 중 프로 세 스 프로 그래 밍 인 스 턴 스
multiprocessing.Queue()
Queue 의 경우 부모 프로 세 스에 서 두 개의 하위 프로 세 스 를 만 들 고 하 나 는 Queue 에 데 이 터 를 쓰 고 하 나 는 Queue 에서 데 이 터 를 읽 습 니 다.
multiprcessing.Queue.put()입 대 를 위 한 작업
multiprcessing.Queue.get()이 팀 을 위해 조작 합 니 다.
대기 열 스 레 드 와 프로 세 스 보안
put(obj[, block[, timeout]])
obj 를 대기 열 에 넣 습 니 다.선택 할 수 있 는 매개 변수 block 이 True(기본 값)이 고 timeout 이 None(기본 값)이면 남 은 슬롯 이 사용 할 때 까지 차단 합 니 다.시간 초과 가 양수 라면 최대 시간 초과 초 수 를 막 을 수 있 으 며,이 시간 동안 사용 가능 한 슬롯 이 없 으 면 Queue.Full 이상 이 발생 할 수 있 습 니 다.그렇지 않 으 면(블록 은 False)남 은 슬롯 을 즉시 사용 할 수 있 으 면 하나의 항목 을 대기 열 에 두 고 그렇지 않 으 면 Queue.Full 이상 이 발생 합 니 다(이 경우 시간 초과 무시).
get([block[, timeout]])
대기 열 에서 항목 을 삭제 하고 되 돌려 줍 니 다.선택 할 수 있 는 args 블록 이 True(기본 값)이 고 시간 초과 가 None(기본 값)이면 프로젝트 가 사용 할 때 까지 차단 합 니 다.시간 초과 가 양수 라면 시간 초과 초 수 를 막 고 이 시간 내 에 사용 가능 한 항목 이 없 을 때 Queue.Empty 이상 을 일 으 킵 니 다.그렇지 않 으 면(block 은 False)한 항목 이 즉시 사용 가능 하 다 면 항목 을 되 돌려 줍 니 다.그렇지 않 으 면 Queue.Empty 이상 이 발생 할 수 있 습 니 다(이 경우 시간 초과 무시).
#- * -coding: utf - 8 - * -
from multiprocessing
import Process, Queue
import os
import time
import random
# :
def write(q):
print('Process to write: %s' % os.getpid())
for value in ['A', 'B', 'C']:
print('Put %s to queue...' % value)
q.put(value)
time.sleep(random.random())
# :
def read(q):
print('Process to read: %s' % os.getpid())
while True:
value = q.get()
print('Get %s from queue.' % value)
if __name__ == '__main__': # Queue, :
q = Queue()
pw = Process(target = write, args = (q, ))
pr = Process(target = read, args = (q, ))# pw, :
pw.start()# pr, :
pr.start()# pw :
pw.join()# pr , , :
pr.terminate()
출력
Process to read: 5836
Process to write: 6472
Put A to queue...
Put B to queue...
Get A from queue.
Put C to queue...
Get B from queue.
Get C from queue.
Process finished with exit code 0
multiprocessing.Pipe()Pipe()함 수 는 파이프 로 연 결 된 연결 대상 을 되 돌려 줍 니 다.기본 적 인 상황 에서 양 방향(양 방향)입 니 다.
파이프()가 되 돌아 오 는 두 연결 대상 은 파이프 의 양 끝 을 대표 합 니 다.모든 연결 대상 에는 send()와 recv()방법(등등)이 있다.두 프로 세 스(또는 스 레 드)가 파이프 의 같은 끝 을 동시에 읽 거나 기록 하려 고 시도 하면 파이프 의 데이터 가 손 상 될 수 있 습 니 다.물론 파이프 의 다른 단 을 동시에 사용 하 는 과정 도 위험 하지 않다.
파이프 끝 을 나타 내 는 커 넥 션(conn 1,conn 2)대상 을 되 돌려 줍 니 다.
Duplex 가 True(기본 값)라면 파 이 프 는 양 방향 입 니 다.
Duplex 가 False 라면 파 이 프 는 단 방향 입 니 다.conn 1 은 메 시 지 를 받 을 수 있 고 conn 2 는 메 시 지 를 보 낼 수 있 습 니 다.
#- * -coding: utf - 8 - * -
from multiprocessing
import Process, Pipe
def f(conn):
conn.send([42, None, 'hello'])
while True:
print(conn.recv())
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target = f, args = (child_conn, ))
p.start()
print parent_conn.recv()# prints "[42, None, 'hello']"
parent_conn.send('666')
p.terminate()
출력:
[42, None, 'hello']
666
Process finished with exit code 0
총결산이상 은 python 다 중 프로 세 스 가 프로 세 스 간 통신 인 스 턴 스 를 실현 하 는 모든 내용 입 니 다.도움 이 되 기 를 바 랍 니 다.관심 이 있 는 친 구 는 본 사 이 트 를 계속 참조 할 수 있 습 니 다.
Python 프로 그래 밍 개미 떼 알고리즘 상세 해석 실현
python 포환 의 운행 궤적 코드 공유
Python 에서 turtle 그림 예제
부족 한 점 이 있 으 면 댓 글로 지적 해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.