【发布时间】:2016-02-22 08:26:28
【问题描述】:
我正在通过调用 C++ DLL 来设计 Python 应用程序,我已经发布了我的 DLL 和 Python 3.4 here 之间的交互。但是现在我需要在涉及基于线程的模型的流式传输中执行一些过程,并且我的回调函数看起来将所有prints 放入队列中,并且只有当我的流式传输结束时,才会打印所有信息。
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
print("{}\t{}".format(ConList[i], out_list_item))
return 0
我已尝试使用以下方法,但它们看起来都以相同的方式工作:
from threading import Lock
print_lock = Lock()
def save_print(*args, **kwargs):
with print_lock:
print (*args, **kwargs)
def callbackU(OutList, ConList, nB):
for i in range(nB):
out_list_item = cast(OutList[i], c_char_p).value
save_print(out_list_item))
return 0
和:
import sys
def callbackU(OutList, ConList, nB):
for i in range(nB):
a = cast(OutList[i], c_char_p).value
sys.stdout.write(a)
sys.stdout.flush()
return 0
我希望我的回调在调用时打印其消息,而不是在整个过程结束时打印。
【问题讨论】:
-
请改写你的问题,用自然语言,我什么都听不懂!
-
好的,那是因为我不是母语人士,但你能理解我的另一个问题吗?还是我也应该更好地解释另一个?
-
OT:几乎没有人阅读“我的其他问题”链接,最好包含适用的摘要。另一方面,欢迎链接到知名主题或资源(例如 wiki: DAG 或 pypi: cffi)。
标签: python c++ multithreading printing