Python:在多线程中打印
问题描述
我有一个基于Twisted的网络系统的实现。我注意到,当我在新线程而不是主线程中运行函数(执行一些数学运算并打印结果)时,print函数导致Segmentation fault。有可能吗?是否有避免这种情况的选项?
解决方案
我的方法,基于Bram Cohen's suggestion:
定义全局Lock变量
from threading import Lock
s_print_lock = Lock()
定义要使用Lock调用print的函数
def s_print(*a, **b):
"""Thread safe print function"""
with s_print_lock:
print(*a, **b)
在您的线程中使用s_print而不是print。
相关文章