使用 _thread 模块如何创建多线程,举个例子python
时间: 2023-07-15 14:15:28 浏览: 102
好的,您的问题是关于使用_thread模块创建多线程的例子。以下是一个使用_thread模块创建两个线程的例子:
```
import _thread
import time
# 定义一个函数,用于打印当前线程名字和时间
def print_time(threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print("%s: %s" % (threadName, time.ctime(time.time())))
try:
# 创建线程1
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )
# 创建线程2
_thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print("Error: 无法启动线程")
# 让主线程等待子线程结束
while 1:
pass
```
在上面的例子中,我们定义了一个名为print_time的函数,这个函数会打印当前线程的名字和当前时间,然后休眠一段时间。接下来,在try语句块中,我们使用_thread.start_new_thread()函数分别创建了两个线程,这两个线程都调用了print_time函数,并传入不同的线程名字和休眠时间。最后,我们让主线程等待子线程结束,以保证程序不会过早退出。
相关问题
使用_thread模块创建多线程的例子python
好的,以下是使用_thread模块创建多线程的python代码示例:
```
import _thread
# 定义线程函数
def worker(threadID, delay):
while True:
print("Thread ID {} is running".format(threadID))
time.sleep(delay)
# 创建线程
try:
_thread.start_new_thread(worker, (1, 1))
_thread.start_new_thread(worker, (2, 2))
_thread.start_new_thread(worker, (3, 3))
except:
print("Error: unable to start thread")
while True:
pass # 主线程无限运行
```
在这个例子中,我们定义了一个worker函数,它会在不断循环的过程中打印当前线程的ID,并且使用time模块中的sleep函数,让线程在打印之间暂停一段时间。接着我们使用_thread模块的start_new_thread函数来创建三个线程,并分别给它们传递不同的线程ID和延迟时间。最后,我们让主线程无限运行,以保证程序不会退出。
使用concurrent.futures.ProcessPoolExecutor线程池创建多线程,举个例子
好的,可以举一个简单的例子来说明如何使用concurrent.futures.ProcessPoolExecutor线程池创建多线程。首先,我们需要导入concurrent.futures模块中的ProcessPoolExecutor类,然后创建一个该类的实例,设置并发线程数,最后使用submit()方法来提交待执行任务并启动多线程。
下面是一个简单的例子:
```python
import concurrent.futures
# 定义一个简单的函数,用于打印当前线程的名称
def print_thread_name():
print(f'Current thread name is {threading.current_thread().name}')
if __name__ == '__main__':
# 创建ProcessPoolExecutor实例,设置并发线程数为3
with concurrent.futures.ProcessPoolExecutor(max_workers=3) as executor:
# 提交4个任务给线程池
futures = [executor.submit(print_thread_name) for _ in range(4)]
# 打印每个任务执行结果
for future in concurrent.futures.as_completed(futures):
print(future.result())
```
在上面的例子中,我们首先定义了一个简单的函数print_thread_name(),用于打印当前线程的名称。然后,我们使用with语句创建了一个ProcessPoolExecutor实例,并设置并发线程数为3。接着,我们使用submit()方法向线程池中提交4个任务。最后,我们使用as_completed()方法和for循环遍历所有任务的执行结果。
在执行上述代码时,我们可以发现,线程池中会同时运行最多3个线程,并且每个任务的执行结果是随机的。
阅读全文