最基本的多进程示例:
import threading import time def bar(start_time,sleep_time): print ('is start_time: ......',start_time) time.sleep(sleep_time) print ('sleep done,',sleep_time) if __name__ == '__main__': b1 = threading.Thread(target=bar,args=(time.time(),44)) b2 = threading.Thread(target=bar,args=(time.time(),65)) b1.start() b2.start() print ('script done!')
join:
等待至线程中止。阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
import threading import time def bar(name,sleep_time): print ('is start_time: ......',name) time.sleep(sleep_time) print ('sleep done,',sleep_time) if __name__ == '__main__': b1 = threading.Thread(target=bar,args=('name_1',2)) b2 = threading.Thread(target=bar,args=('name_2',3)) b1.start() b2.start() b1.join() print ('script done!') # is start_time: ...... name_1 # is start_time: ...... name_2 # sleep done, 2 # script done! # sleep done, 3
setDaemon(daemonic) :
设置守护线程标志为布尔值daemonic。它必须在start()调用之前被调用。
import threading import time def bar(name,sleep_time): print ('is start_time: ......',name) time.sleep(sleep_time) print ('sleep done,',name) if __name__ == '__main__': threahs = list() b1 = threading.Thread(target=bar,args=('name_1',2)) threahs.append(b1) b2 = threading.Thread(target=bar,args=('name_2',3)) threahs.append(b2) b2.setDaemon(True) for i in threahs: i.start() print ('script done!') # is start_time: ...... name_1 # is start_time: ...... name_2 # script done! # sleep done, name_1
此处b2是daemon进程,所以在主进程运行完成时直接退出。不会去理会b2的进程是否执行完成。
getName()
返回线程名。
setName(name)
设置线程名。
这名字是只用来进行标识目的的字符串。它没有其他作用。多个线程可以取同一名字。最初的名字通过构造函数设置。
isAlive()
返回线程是否活动的。
isDaemon()
返回线程的守护线程标志
run()
用以表示线程活动的方法。你可能在Python Thread类的子类重写这方法。标准的 run()方法调用作为target传递给对象构造函数的回调对象。
test