python queue pip
2016-06-21 00:00
323 查看
1.Queue
self._reader, self._writer = Pipe(duplex=False)
管道描述符 5/6
self._rlock = Lock()
self._opid = os.getpid()
#coding:utf-8
from multiprocessing import Process, Queue
import os, time, random
for value in ['A', 'B', 'C']:
print 'Put %s to queue...' % value
q.put(value)
time.sleep(random.random())
while True:
value = q.get(True)
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()
=========================
w:q.put()
def put(self, obj, block=True, timeout=None)://obj是数据
assert not self._closed
if not self._sem.acquire(block, timeout):
raise Full
r: q.get()
def get(self, block=True, timeout=None):
if block and timeout is None:
self._rlock.acquire()//管道可读
try:
res = self._recv()// ‘A..‘读出数据
self._sem.release()
return res
finally:
self._rlock.release()//释放’rlock‘
self._reader, self._writer = Pipe(duplex=False)
管道描述符 5/6
self._rlock = Lock()
self._opid = os.getpid()
self._wlock = Lock()
#coding:utf-8
from multiprocessing import Process, Queue
import os, time, random
写数据进程执行的代码:
def write(q):for value in ['A', 'B', 'C']:
print 'Put %s to queue...' % value
q.put(value)
time.sleep(random.random())
读数据进程执行的代码:
def read(q):while True:
value = q.get(True)
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()
=========================
w:q.put()
def put(self, obj, block=True, timeout=None)://obj是数据
assert not self._closed
if not self._sem.acquire(block, timeout):
raise Full
self._notempty.acquire() try: if self._thread is None: self._start_thread() self._buffer.append(obj)//self._buffer.append拿到写者数据. self._notempty.notify()//通知读 finally: self._notempty.release()
r: q.get()
def get(self, block=True, timeout=None):
if block and timeout is None:
self._rlock.acquire()//管道可读
try:
res = self._recv()// ‘A..‘读出数据
self._sem.release()
return res
finally:
self._rlock.release()//释放’rlock‘
相关文章推荐
- python xxxx 视频抓取
- Python爬虫实践(六):正则表达式(1)
- Python验证码识别
- python中replace函数的问题
- 初设大蟒蛇之Python函数篇
- 配置基于python的VIM环境
- 配置基于python的VIM环境
- python下代码优化的一个例子
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python 网页爬虫
- mac python tab 补全
- 基于Python的机器学习包 scikit-learn
- ELK-Python(三)
- 观察者模式(Python实现)
- ELK-Python(二)
- ELK-Python(一)
- IPython & Cython
- Python连接mssql server
- Mac系统之Python命令行tab键补全
- python利用utf-8编码判断中文英文字符