【发布时间】:2018-07-23 06:19:05
【问题描述】:
我最近在一次技术面试中遇到了这个问题:
打印系列010203040506。使用多线程,第一个线程只打印0,第二个线程只打印偶数,第三个线程只打印奇数。
虽然我有一些 Python 经验,但我从未真正编写过任何多线程代码。因此,在阅读了一些文档之后,我设法创建了可以完成这项工作的类。我正在尝试将事情放在一起,但不确定如何去做。有人可以为此提供基于锁或信号量的解决方案吗?
import threading
class PrintSeries(threading.Thread):
def __init__(self, start, stop, step, string):
threading.Thread.__init__(self)
self.string = string
self.start = start
self.stop = stop
self.step = step
def run(self):
if self.start < self.stop:
self.start += self.step
self.string += str(self.start)
s = ''
t1 = PrintSeries(0, 0, 0, s)
t2 = PrintSeries(1, 2, 5, s)
t3 = PrintSeries(2, 2, 6, s)
t1.start()
t2.start()
t3.start()
t1.join()
t2.join()
t3.join()
print(s)
无论如何,即使这样也会遇到以下错误,
t1.start()
TypeError: 'int' object is not callable
【问题讨论】:
标签: python multithreading concurrency multiprocessing