Python's Archiver

為方便港臺同胞閱覽,Python中國特別推出簡繁體內容轉換功能

xieaotian 发表于 2008-11-17 11:27

Python的线程非常简单易用,可同时执行很多个while循环

程序一般是流线型的,只能在一个while里循环,但用多线程就可实现多个while同时运行了!!!

比如一个程序里,主程序在执行代码块,另加个线程等待用户输入,当无用户输入时执行主代码循环...

(来源于这个参考网站:     [url]http://linuxgazette.net/107/pai.html[/url])

当用户输入quit时退出程序:

import time
import thread


import sys

aaa='' #初始用户输入变量


def myfunction(string,sleeptime,*args):
    while 1:
      
        print string
        time.sleep(sleeptime) #sleep for a specified amount of time.

def test(x,y):
    print x,y
    global aaa
    while 1:
        aaa=sys.stdin.readline() #或用raw_input()也可的,aaa得是全局函数
        aaa=aaa[:-1] #因为输入quit后aaa的值为'quit\n' 用[:-1]去掉最后一个字符
        print 'aaa是',aaa
        if aaa=='quit':
            print "10秒后退出,这里退出的是线程了,不是整个进程,退出输入信息线程后用户不能输入信息了"
            time.sleep(10)
            sys.exit()
        time.sleep(1)
      

if __name__=="__main__":
    #加线程区,想加多少就加多少
    thread.start_new_thread(myfunction,("Thread No:1",2))
    thread.start_new_thread(test,('1','2')) #注意这里的test后的参数为序表('1','2'),只是起格式作用...用不着也得加一个序表形式的参数的

    while 1:
        print '主线程'
        print 'aaa的值是',aaa
        if aaa!='任意的':
            for i in range(10):
                print i
                time.sleep(1)
        else:
            print '输入了(任意的),退出,这里退出的才是进程'
            sys.exit()

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.