显示当前有几条线程:print(threading.active_count())
显示具体的进程名:print(threading.enumerance())
显示当前正在运行的线程:print(threading.current_thread())
开新线程:
添加新的线程名add_thread = threading.Thread(target='此处输入要运行的子程序', name='这里可以给线程命名,但并不是必须'),添加完后,就可以用add_thread.start()开始这一条新的线程。
当需要等待当前线程运行结束才运行其它线程时(join):
add_thread.join()可以等待add_thread这一个进程运行完成后才运行写在add_thread.join()后面的线程,注意:add_thread.join()这一句出现的位置作为分割,这一句以前的进程继续运行,这一句以后的进程等待add_thread这一条进程完成后才继续运行。
用多个线程对同一个全局变量进行操作时用Lock:
它有以下3个方法:
acquire
(blocking=True, timeout=-1)
可以阻塞或非阻塞地获得锁。
当调用时参数 blocking 设置为 True
(缺省值),阻塞直到锁被释放,然后将锁锁定并返回 True
。
在参数 blocking 被设置为 False
的情况下调用,将不会发生阻塞。如果调用时 blocking 设为 True
会阻塞,并立即返回 False
;否则,将锁锁定并返回 True
。
当浮点型 timeout 参数被设置为正值调用时,只要无法获得锁,将最多阻塞 timeout 设定的秒数。timeout 参数被设置为 -1
时将无限等待。当 blocking 为 false 时,timeout 指定的值将被忽略。
如果成功获得锁,则返回 True
,否则返回 False
(例如发生 超时 的时候)。
在 3.2 版更改: 新的 timeout 形参。
在 3.2 版更改: 现在如果底层线程实现支持,则可以通过POSIX上的信号中断锁的获取。
release
()
释放一个锁。这个方法可以在任何线程中调用,不单指获得锁的线程。
当锁被锁定,将它重置为未锁定,并返回。如果其他线程正在等待这个锁解锁而被阻塞,只允许其中一个允许。
在未锁定的锁调用时,会引发 RuntimeError
异常。
没有返回值。
locked
()
如果获得了锁则返回真值。