# 线程和线程

> 原文： [https://pythonspot.com/threading](https://pythonspot.com/threading)

在 Python 中，您可以使用 Python 2.x 中的线程模块或 Python 3 中的 _thread 模块创建线程。我们将使用线程模块与之交互。
线程是一种操作系统进程，具有与正常进程不同的功能：

*   线程作为进程的子集存在
*   线程共享内存和资源
*   进程具有不同的地址空间（在内存中）

什么时候使用线程处理？ 通常，当您希望功能与程序同时出现时。 如果创建服务器软件，则希望服务器不仅侦听一个连接，而且侦听许多连接。 简而言之，线程使程序能够一次执行多个任务。

## Python 线程

Let’s create a thread program. In this program we will start 10 threads which will each output their id.

```py
import threading

# Our thread class
class MyThread (threading.Thread):

    def __init__(self,x):
        self.__x = x
        threading.Thread.__init__(self)

    def run (self):
          print str(self.__x)

# Start 10 threads.
for x in xrange(10):
    MyThread(x).start()

```

输出：

```py
0
1
...
9

```

如果运行一次，线程不必停止。 线程可以是定时的，每 x 秒重复执行一次线程功能。

## 定时线程

In Python, the Timer class is a subclass of the Thread class. This means it behaves similar. We can use the timer class to create timed threads. Timers are started with the .start() method call, just like regular threads. The program below creates a thread that starts after 5 seconds.

```py
#!/usr/bin/env python
from threading import *

def hello():
    print "hello, world"

# create thread
t = Timer(10.0, hello)

# start thread after 10 seconds
t.start()

```

## 使用线程


重复执行功能我们可以像这样无休止地执行线程：

```py
#!/usr/bin/env python
from threading import *
import time

def handleClient1():
    while(True):
        print "Waiting for client 1..."
        time.sleep(5) # wait 5 seconds      

def handleClient2():
    while(True):
        print "Waiting for client 2..."
        time.sleep(5) # wait 5 seconds

# create threads
t = Timer(5.0, handleClient1)
t2 = Timer(3.0, handleClient2)

# start threads
t.start()
t2.start()

```