python: บันทึกเรื่อง thread
Submitted by wd on Thu, 2007-03-29 13:30
ทีแรกจะศึกษาเพื่อเอามาทำ 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
ข้อดีคือ ออกจากเชลล์ไพธอนได้เลย (แต่โปรเซสก็ตายด้วย)
ข้อเสียคือ หยุดการทำงานของเธรดไม่ได้
- Printer-friendly version
- Log in or register to post comments
- 6226 reads
Recent comments