python: บันทึกเรื่อง thread

Topic: 
 

ทีแรกจะศึกษาเพื่อเอามาทำ session แต่คิดว่าคงไม่ค่อยเหมาะ เพราะเปลืองหน่วยความจำ
ขอบันทึกไว้หน่อยครับ

สมมุติว่าต้องการทำคำสั่ง print "ABC" เมื่อเวลาผ่านไป 30 วินาที
แบบแรกใช้โมดูล threading ใช้คำสั่งว่า

>>> def p():
...  print "ABC"
...

>>> import threading
>>> ss = threading.Timer(30, p)
>>> ss.start()
(ผ่านไป 30 วินาที) ABC

จับการทำงานของโปรเซสด้วย top ได้ว่า 0.0%CPU 2.7%MEM
มีข้อเสียคือ ออกจากเชลล์ของไพธอนไม่ได้ เพราะต้องรอให้เธรดจบก่อน (ด้วยคำสั่ง ss.cancel() )

แบบที่สองใช้โมดูล thread เฉย ๆ
ใช้คำสั่งดังนี้

>>> def p():
...   time.sleep(30)
...   print "ABC"
...

>>> import thread, time
>>> ss = thread.start_new_thread(p, ())
(ผ่านไป 30 วินาที) ABC

จับด้วย top ได้ว่า 0.0%CPU 1.1%MEM
ข้อดีคือ ออกจากเชลล์ไพธอนได้เลย (แต่โปรเซสก็ตายด้วย)
ข้อเสียคือ หยุดการทำงานของเธรดไม่ได้

 

Syndicate

Subscribe to Syndicate

Who's online

There are currently 0 users online.