【发布时间】:2017-10-03 08:15:23
【问题描述】:
这太疯狂了!我听说 Python 线程很慢,但这超出了正常范围。
这是伪代码:
class ReadThread:
v = []
def __init__(self, threaded = True):
self.v = MySocket('127.0.0.1')
if threaded:
thread.start_new_thread(self._scan, ())
def read(self):
t0 = datetime.now()
self.v.read('SomeVariable')
t = datetime.now()
dt = (t-t0).total_seconds()
print dt
def _scan(self):
while True:
self.read()
如果我在主线程的 while 循环中运行 read(),如下所示:
r = ReadThread(threaded = False)
while True:
r.read()
dt 约为 78 毫秒,变化很小。现在,如果我在这样的新线程中运行它:
r = ReadThread(threaded = True)
while True:
pass
dt 约为 130 毫秒,方差为 +-10 毫秒!
为什么这么慢?我做错了什么吗?只是在一个新线程中是一样的!
MySocket() 是一个使用套接字读取/写入变量到服务器的对象,而 read() 只是获取一些用于测试的变量。
【问题讨论】:
标签: python multithreading performance sockets