Skip to content

Asynchronous I/O กับ Python ด้วย asyncio

สวัสดีผู้อ่านทุกท่านครับ ใน Python 3.4 ได้มีการเปลี่ยนแปลงครั้งสำคัญ นั้นคือ การรองรับ Asynchronous I/O ครับ เราสามารถใช้ Asynchronous I/O กับ Python ได้ด้วย asyncio บทความนี้จะพาผู้อ่านไปแนะนำการใช้ Asynchronous I/O กับ Python ด้วย asyncio กันครับ

ไลบรารี asyncio
เป็นไลบรารีมาตรฐานใหม่ของภาษา Python ทำให้ภาษา Python รองรับ Asynchronous I/O ใน Python 3.4 ถึงแม้จะเพิ่งมีใน Python 3.4 ทาง Python Software Foundation ได้ออกไลบรารี asyncio สำหรับ Python 3.3 ออกมาให้ติดตั้งด้วยครับ

วิธีการติดตั้งไลบรารี asyncio สำหรับ Python 3.3 เท่านั้น
สำหรับผู้ใช้ Windows เข้าไปโหลดไฟล์ whl มาติดตั้งได้จาก https://pypi.python.org/pypi/asyncio/
สำหรับผู้ใช้งาน Mac OS , Linux โหลดไฟล์โค้ดมาจาก https://pypi.python.org/pypi/asyncio/ โหลดไฟล์ tar.gz แล้วทำการแตกไฟล์เสร็จแล้วใช้คำสั่ง
$ sudo python setup.py install

ตัวอย่างการใช้งานไลบรารี asyncio

import asyncio

@asyncio.coroutine
def create():
    yield from asyncio.sleep(3.0)
    print("(1) create file")

@asyncio.coroutine
def write():
    yield from asyncio.sleep(1.0)
    print("(2) write into file")

@asyncio.coroutine
def close():
    print("(3) close file")

@asyncio.coroutine
def test():
    asyncio.async(create())
    asyncio.async(write())
    asyncio.async(close())
    yield from asyncio.sleep(3.0)
    loop.stop()

loop = asyncio.get_event_loop()
asyncio.async(test())
loop.run_forever()
print("Pending tasks at exit: %s" 

% asyncio.Task.all_tasks(loop))
loop.close()

ผลลัพธ์

(3) close file
(2) write into file
(1) create file
Pending tasks at exit: set()

อ่านเอกสารการใช้งานได้ที่ https://docs.python.org/3/library/asyncio.html
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

Published on Categories web-developer, web-framework, เครือข่าย

About wannaphong

วรรณพงษ์ ภัททิยไพบูลย์ ผู้ดูแลเว็บ wannaphong.com และผู้เขียนบทความบล็อกนี้ นักศึกษาชั้นปีที่ 1 สาขาวิทยาการคอมพิวเตอร์และสารสนเทศ คณะวิทยาศาสตร์ประยุกต์และวิศวกรรมศาสตร์ มหาวิทยาลัยขอนแก่น วิทยาเขตหนองคาย

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *