我是 python 新手,尝试理解 python 中多线程的概念。根据我在 Unix 多线程编程方面的知识,如果 main 函数正在终止,则由 main 函数创建的线程也将终止,而不管它们在线程中所做的工作(如果我们不使用任何 pthread_join() 函数)。
但是在通过 python 中的多线程时,我没有看到这个功能。即使我的主线程完成了它的工作,我的线程仍在成功运行。所以我想知道,Python 和 Unix 中的线程表现不同......或者我错过了一些东西。请帮助理解python中的这个线程功能。这是我在 python 中使用的代码。
#! /usr/bin/python
import logging
import random
import threading
import time
logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-10s) %(message)s',
)
class Counter(object):
def __init__(self, start=0):
self.lock = threading.Lock()
self.value = start
def increment(self):
logging.debug('Waiting for lock')
# Getting the Lock
self.lock.acquire()
try:
logging.debug('Acquired lock')
self.value = self.value + 1
finally:
# Releasing the Lock
self.lock.release()
def worker(c):
for i in range(2):
pause = 4
logging.debug('Sleeping for %0.02f', pause)
time.sleep(pause)
c.increment()
logging.debug('Done')
if __name__ == '__main__':
counter = Counter()
for i in range(2):
t = threading.Thread(target=worker, args=(counter,))
t.start()
logging.debug('Counter: %d', counter.value)