gpt4 book ai didi

python - 我的脚本需要同时运行两个循环来读取来自两个不同来源的 IO 数据。我的线程正确吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:53 25 4
gpt4 key购买 nike

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)

关于python - 我的脚本需要同时运行两个循环来读取来自两个不同来源的 IO 数据。我的线程正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com