我编写基本的线程程序:
import threading
初始化线程
class OpenThread (threading.Thread):
def __init__(self, threadID):
threading.Thread.__init__(self)
self.threadID = threadID
def run(self):
print thread.threadID
for tID in range(0, 5):
thread = OpenThread(tID)
thread.start()
和尝试的最后5个输出在这里:
####try 1
0
1
2
3
4
####try 2
0
1
2
3
4
####try 3
0
2
23
4
####try 4
0
1
2
3
4
####try 5
0
1
3
34
我使用PyCharm作为IDE。 我不明白为什么有空格特征以及为什么更多的线程参数得到相同的值
答案 0 :(得分:0)
请详细了解打印线程安全。
问题是python使用单独的操作码进行NEWLINE打印和打印对象本身。最简单的解决方案可能是使用带有显式换行符的显式sys.stdout.write。或者使用锁定并重新打印"打印"!或者使用日志记录系统!
from __future__ import print_function
print = lambda x: sys.stdout.write("%s\n" % x)
或
import threading
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('thread-safe')
class OpenThread (threading.Thread):
def __init__(self, threadID):
threading.Thread.__init__(self)
self.threadID = threadID
def run(self):
logger.debug(thread.threadID)
for tID in range(0, 5):
thread = OpenThread(tID)
thread.start()
在python3中打印是安全的。