python中实现多线程可以通过threading类。线程间同步则可以用queue类。至于python的进程间通信,暂时没有发现有类似linux ipc的模块可供使用,但是可以通过unix域套接字实现进程间通信。
1、用threading模块实现多线程
可以通过派生threading.Thread类来实现一个可独立控制的线程实例。用户需要(也只能)重写Thread类的__init__和run函数来实现自己的线程。线程类实例化后可以通过使用start函数使线程运行,该函数会在新开启的线程中调用run函数。这里需要注意的是,该类中只有run函数是出在独立的线程中运行的,其他控制函数都是处在调用者线程中执行的。其他线程可以通过调用Thread实例的join函数来阻塞自己等待线程运行结束。Thread类中name属性用来存放线程的名字。在python中主线程是一个名为“
main thread”的Thread实例。
1.1、Thread类中的函数
start():启动线程
。只能调用一次,否则会报错。该函数启动一个单独的线程运行run函数。
run():通过重写这个函数来实现用户函数在线程中的运行。也可以在类实例化的时候直接指定运行函数,那样的话可以不用重写这个函数,
join(timeout=None):调用这个函数的线程收到阻塞直到线程实例退出。timeout,一个浮点数,可以指定超时时间,单位秒。
name:存放线程的名字。可以更改,默认为Thread-n的格式。
ident:存放线程标识,一个整数。在线程结束后依然存在(直到线程资源被回收)
is_alive():判断线程是否存活。返回True或者False。调用模块函数 enumerate()可以得到所以存活的线程。
daemon:指定线程是否为守护线程
run():通过重写这个函数来实现用户函数在线程中的运行。也可以在类实例化的时候直接指定运行函数,那样的话可以不用重写这个函数,
join(timeout=None):调用这个函数的线程收到阻塞直到线程实例退出。timeout,一个浮点数,可以指定超时时间,单位秒。
name:存放线程的名字。可以更改,默认为Thread-n的格式。
ident:存放线程标识,一个整数。在线程结束后依然存在(直到线程资源被回收)
is_alive():判断线程是否存活。返回True或者False。调用模块函数 enumerate()可以得到所以存活的线程。
daemon:指定线程是否为守护线程