python在无限循环中使用线程

时间:2014-05-14 15:49:28

标签: python multithreading chat

如何使用线程来无限地同时运行2个进程?我有一个聊天程序,我想输入打印出来的东西。

我对线程进行了一些研究,看起来真的很复杂。到目前为止我所拥有的是

t = Thread(target=refresh)    
t.daemon = True
t.start()

我有一个refresh()函数。

但是我很确定这是错的,而且我不知道如何在我的输入旁边无限地运行它。有人可以解释线程是如何工作的,以及我如何能够无限地运行它与另一个无限循环?

2 个答案:

答案 0 :(得分:1)

你必须像在代码中一样启动你的线程。 重要的是等待线程完成(即使它是无限循环)因为没有它,你的程序将立即停止。 只需使用

t.join()

你的代码将运行直到t线程结束。如果你想要两个线程,就这样做

t1.start()
t2.start()

t1.join()
t2.join()

你的两个主题将同时运行

对于崩溃问题,使用多线程,您必须查看Mutex以获取IOerror

答案 1 :(得分:0)

#!/usr/bin/python

import thread
import time

# Define a function for the thread
def print_time( threadName, delay):
   count = 0
   while count < 5:
      time.sleep(delay)
      count += 1
      print "%s: %s" % ( threadName, time.ctime(time.time()) )

# Create two threads as follows
try:
   thread.start_new_thread( print_time, ("Thread-1", 2, ) )
   thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
   print "Error: unable to start thread"

while 1:
   pass

结果是:

Thread-1: Thu Jan 22 15:42:17 2009
Thread-1: Thu Jan 22 15:42:19 2009
Thread-2: Thu Jan 22 15:42:19 2009
Thread-1: Thu Jan 22 15:42:21 2009
Thread-2: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:23 2009
Thread-1: Thu Jan 22 15:42:25 2009
Thread-2: Thu Jan 22 15:42:27 2009
Thread-2: Thu Jan 22 15:42:31 2009
Thread-2: Thu Jan 22 15:42:35 2009

自:http://www.tutorialspoint.com/python/python_multithreading.htm

从那里你可以弄清楚如何在线程之间进行交谈。