import threading
import mynetworking
def FirstNIC():
for addr in mynetworking.first.scan():
print addr
def SecondNIC():
for addr in mynetworking.second.scan():
print addr
first = threading.Thread(target=FirstNIC)
second = threading.Thread(target=SecondNIC)
first.start()
second.start()
这就是我想要给您的基本代码结构。该程序将运行两个 while True 循环来读取来自两个不同网络源的数据。上面的脚本需要收集该数据并将其记录下来。
这段代码行得通吗?有什么好处吗?线程是否应该返回 addr 供主程序记录?或者我应该简单地将 print addr 替换为 log(addr)?
这是我第一次使用多线程,所以我不完全确定它是如何工作的......
请您参考如下方法:
你的代码很好,除了你的打印语句可能会发生冲突,因为它们可以同时写入。使用 Queue.queue 轻松同步:
import threading
import mynetworking
import Queue
def FirstNIC(queue):
for addr in mynetworking.first.scan(queue):
queue.put(addr)
def SecondNIC(queue):
for addr in mynetworking.second.scan():
queue.put(addr)
def logger(queue):
while True:
print queue.get()
output_queue = Queue.queue()
first = threading.Thread(target=FirstNIC, args=(output_queue,))
second = threading.Thread(target=SecondNIC, args=(output_queue,))
first.start()
second.start()
logger(output_queue)
